- top
查看高cpu进程pid=1234
top -H -p 1234
查找进程内cpu占用较高的线程pid,并转成十六进制ea88
jstack 1234
查看线程栈信息,并找到ea88对应的线程,发现其是VM Thread,判断是jvm gc线程
jstat -gcutil 1234 1s 10
查看gc情况,发现几乎每秒一次full gc
jmap -heap 1234
查看jvm的堆栈使用情况,发现新生代和老年代空间充足
jstat -gc 1234 1s 3
查看gc的各分区内存占用情况,发现matespace使用100%
- 查看gc日志
提前配置jvm gc日志输出 -XX:+PrintGCDetails -XX:+PrintGC;确定是由于matespace空间不足导致频繁full gc
分析堆栈信息
jmap -histo 1234
查看实例信息
jmap -dump:live,format=b,file=heap.bin 1234
导出堆内存信息,可使用mat分析