JVM问题排查

一、线上CPU飚高、死锁等排查基本步骤:

1、top

记录CPU使用率最高的JAVA进程PID

2、top -H -p PID

记录PID进程中CPU占用率最高的线程TID(界面上显示的仍是PID)

3、printf %x TID

将TID转为16进制XTID(因为jstack中线程号是16进制表示)

4、jstack PID或者jstack PID > jstack.txt

搜索XTID就可以找到线程当前执行的堆栈,找到代码所在行

出现死锁的话都在jstack.txt的最后,如果能用JVisualVM或者JConsole的话,在线程标签界面里就可以直接显示检测出的死锁

二、内存溢出

1、应用启动时添加如下参数:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/dump/

2、导入JVisualVM分析类实例

或者如果可能保留内存溢出现场:

1、jmap -dump:format=b,file=heapdump.phrof pid

2、使用JVisualVM或者MAT工具进行分析

一次项目上内存溢出分析实践(javax.crypto.JceSecurity)

你可能感兴趣的:(JVM问题排查)