top 查看高cpu进程pid=1234
top -H -p 1234 查找进程内cpu占用较高的线程pid
printf “%x\n” 1234 并转成十六进制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分析
|