JVM状态监控常用命令整理总结
2024-06-28 16:00:30
供稿:网友
java.lang.OutOfMemoryError: Java heap space这个错误表示JVM的新生代和老生代的内存不足。出现这个错误说明应用程序出现了内存溢出或者程序所需要的内存大于JVM的内存设置了。遇到这个问题的时候,首先我们可以调节JVM的HEAP内存的大小,具体可以通过-Xms和-Xmx来进行设置,如果设置大以后还是会出现内存溢出,那么说明应用程序本身存在内存泄露,这个时候就需要我们对应用程序进行检查,找出导致内存泄露的地方,然后修正。http://www.360doc.com/content/10/0301/13/57735_17193048.shtml下面列出JVM状态监控的几个Java命令1,查看JVM进程内存使用resource top top -p 6917查看系统内存使用情况free -m2,查看堆内存使用情况 最大堆内存配置,年轻代EC/EU,FROM/TO,老年代OC/OU,永久代PC/PC的使用jmap -heap 6917此命令可查看使用的垃圾收集器配置. Parallel GC with 4 thread(s)http://www.CUOXin.com/0616--ataozhijia/p/4136312.html查看JVM堆中对象详细占用情况jmap -histo 6917 > jmaphisto1819.loghttps://my.oschina.net/feichexia/blog/196575堆内存 = 年轻代 + 年老代 + 永久代年轻代 = Eden区 + 两个Survivor区(From和To)3,进程堆栈状态输出 线程阻塞或等待等状态jstack 6917 > jstack1802.log在发生死锁时可以用jstack -l pid来观察锁持有情况http://blog.csdn.net/rachel_luo/article/details/8920596http://jameswxx.CUOxin.com/blog/1041173http://itindex.net/detail/48955-jstack-dump-%E6%97%A5%E5%BF%97http://www.CUOXin.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html4,了解JVM堆内存使用和GC回收状态 250MS一次,执行4次.jstat -gc 6917 250 4 > /tmp/jvmgc25042216.log5,查看JAVA进程 jpsjps -v 查看进程启动时所带的JVM参数6,进程内存使用情况dump到文件中(1)jmap -dump:format=b,file=/tmp/dump.dat 6917因生成转储文件大时很耗费系统资源,应避免系统高峰时运行此指令,否则会导致系统短暂无响应情况.(2)使用hPRof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。(3)同10.在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成dump文件。http://www.blogjava.net/mlh123caoer/archive/2011/10/04/360020.html7,查看进程启动的参数配置8,heap内存分析jhat -J-Xmx1024M /tmp/dump.dat执行后等待console 中输入start HTTP server on port 7000 即可使用浏览器访问 ip:7000这个也就平时自己玩儿的时候用用,在生产环境就不太靠谱儿.http://lc87624.CUOxin.com/blog/1711071Eclipse Memory Analyzereclipse 市场查找安装.IBM HeapAnalyzerftp://public.dhe.ibm.com/software/websphere/appserv/support/tools/HeapAnalyzer/ha456.jarD:/>java -Xmx512m -jar ha456.jar dumpserver12232.dat9,生成线程堆栈信息kill -3 后面跟上java进程的pid,这样就能生成 thread dump 了.因为jvm已经hang了,所以有时候kill -3看不到线程栈是正常的。http://hllvm.group.CUOxin.com/group/topic/3957010,堆内存溢出时保存线程堆栈到文件中HeapDumpOnOutOfMemoryError 在jvm的 启动参数中追加 下列信息,可以在发生 OutOfMemoryError的时候生成 oom.hprof文件catalina.sh添加:JAVA_OPTS="$JAVA_OPTS -Xmx52m -Xms52m -XX:PermSize=25m -XX:MaxPermSize=25m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/tomcat8093.dump"http://blog.csdn.net/jiangguilong2000/article/details/847636111,查看运行JVM进程时指定的参数 jinfo -flags 6917jinfo 6917jinfo -flag MaxNewSize 6917http://www.CUOXin.com/redcreen/archive/2011/05/04/2037057.html12,选择垃圾收集器http://blog.csdn.net/historyasamirror/article/details/623300713,调优总结 xms xmx xmn xsshttp://unixboy.CUOxin.com/blog/174173/