1、使用top看一下
如下图所示,发现%CPU 达到105.6 CPU 占用率很高,虚拟内存占用也很多
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20513 wuhuiqi+ 20 0 35.962g 1.190g 13164 S 105.6 0.9 61405:41 java
10711 fifth 20 0 13.269g 1.293g 14368 S 2.3 1.0 2105:26 java
2、查看指定进程相关的线程
top -p PID -H 来查询占用CPU 占用很多的线程
top -p 20513 -H
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20791 wuhuiqi+ 20 0 35.962g 1.190g 13164 R 99.3 0.9 57308:18 java
20721 wuhuiqi+ 20 0 35.962g 1.190g 13164 S 0.7 0.9 171:31.55 java
20729 wuhuiqi+ 20 0 35.962g 1.190g 13164 S 0.7 0.9 171:12.99 java
20731 wuhuiqi+ 20 0 35.962g 1.190g 13164 S 0.7 0.9 171:06.91 java
20714 wuhuiqi+ 20 0 35.962g 1.190g 13164 S 0.3 0.9 170:57.62 java
20717 wuhuiqi+ 20 0 35.962g 1.190g 13164 S 0.3 0.9 171:15.67 java
20718 wuhuiqi+ 20 0 35.962g 1.190g 13164 S 0.3 0.9 171:12.73 java
3、进制转换
将相关的消耗CPU 多的线程的ID 转为16进制
Printf “%x\n” 20791
“5137n”
4、jstack查看进程信息
jstack 20513 | grep 5137n
jstack pid | grep 线程Id16进制
然后根据线程信息进行分析即可