排查JVM_OLD过高及频繁FullGc问题

1.通过top命令初步看下机器的情况,如下图:
排查JVM_OLD过高及频繁FullGc问题
2.找到最耗资源的进程,拿到PID,查看该进程的gc情况,可通过jstat命令,如: jstat -gcutil 674 1000 (即,每秒打印gc情况)
关于jstat相关命令可参考:http://blog.itpub.net/31543790/viewspace-2657093/
排查JVM_OLD过高及频繁FullGc问题
3.看一下该进程的堆栈日志,如:jstack -l 674,或生成到日志文件中jstack -l 674 > stack674.log

4.dump当前进程的内存,命令:
jmap -dump:live,format=b,file=m.hprof 674
可以是内存溢出时让其自动生成,配置jvm参数:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/biapp/m.hprof

5.压缩内存文件,方便下载到本地分析,可通过:
tar -zcvf m.hprof.tar.gz m.hprof

6.下载内存文件到本地,用MAT、JProfiler工具进行分析,我更倾向用JProfiler。