步骤一 :找到最耗CPU的进程 步骤二:找到最耗CPU的线程 步骤三:将线程PID转化为16进制 步骤四:查看堆栈,找到线程在干嘛
# (1) 查询CPU占用高的进程ID(PID)
top -c
# (2) 了解此进程的启动参数
ps -ef|grep PID
或者
jinfo -flags PID
# (3) 打印线程堆栈信息并输出文件
jstack -l PID > PID.dump
# (4) 根据进程查找线程ID(TID)
top -H -p PID
# (5) 获取TID的16进制数
printf "%x\n" TID
# (6) 结合TID和线程堆栈信息文件查找问题
- 可以使用文本工具直接查看
- 可以使用 grep TID -A20 PID.dump 来查看
- 需要配合线程状态来检查