1、使用top 命令找到cpu,内存使用率高得进程 ,得到进程id
2、top -Hp 进程id ,获取当前进程的线程,比如:top -Hp 26937
3、将得到线程号转换为16进制 printf ”%x\n“ 线程id printf ”%x\n“ 27155
4、利用jstack 获取信息 jstack 进程id | grep 转换的16进制线程 -A 30 ,通过错误信息的提示,找到问题的代码
流程图如下:
1、top
2、top -Hp 26937
3、printf "%x\n" 27155
4、jstack 26937 | grep 6a13 -A 30
查看进程 top
进程id/pid 42010
查看进程的线程
top -Hp 42010
线程id/pid 42122
线程id转十六进制
printf "0x%x" 42122
十六进制
0xa48a
jstack 进程id |grep 十六进制 -A 5
jstack 42010 |grep 0xa48a -A 5