分析jvm的cpu,内存,回收问题

CPU占用过高,程序假死

1.使用top 定位到占用CPU高的进程PID

top 

通过ps aux | grep PID命令

2.获取线程信息,并找到占用CPU高的线程

ps -mp pid -o THREAD,tid,time | sort -rn

3.将需要的线程ID转换为16进制格式

printf "%x " tid

4.打印线程的堆栈信息

jstack pid |grep tid -A 30

内存分析

1.如果程序支持本地监控,可以用

#interval:采集间隔(单位:s) pid:进程id
jconsole -interval=1 pid

实时查看内存的使用信息

2.生成堆文件

jmap -dump:live,format=b,file=heap.hprof PID

使用MAT或其他工具工具进行分析,MAT有MEM LEAK SUSPECT的机制,可以帮助分析内存泄露

垃圾回收频率分析

jstat -gc PID [interval(ms)] [counts] 

参考文章

https://www.cnblogs.com/pangguoping/p/5715848.html

原文地址:https://www.cnblogs.com/indecy/p/14188478.html