方法一:
第一步:top 命令,找到耗cpu的进程ID
第二步:查询这个进程下的各线程占cpu的情况:
ps -mp pid -o THREAD,tid,time
1
第三步:找到占用cpu比较多的线程,将tid 转成16进制为
第四步:使用jstack命令寻找该线程
jstack pid|grep -A 5 tid(16进制)
1
方法二
第一步: 获取CPU负载最高的Java进程ID(按CPU负载从高到底排)
ps aux --sort=-%cpu | grep java
第二步: 根据进程ID查询CPU负载高的线程ID(按CPU负载从高到底排) ps -mp [进程ID] -o THREAD,tid,time | sort -k 2 -r -n
第三步: #根据线程ID查询问题代码
sudo jstack [进程ID] |grep -A 5 printf "%x" [线程ID]