三个步骤:
1. 找到最耗CPU的进程
工具: top 方法:
- 执行 top -c ,显示进程运行信息列表
- 键入 P (大写 p),进程按照 CPU 使用率排序
2. 找到最耗CPU的线程
工具: top 方法:
- top -Hp 10765 ,显示一个进程的线程运行信息列表
- 键入 P (大写 p),线程按照 CPU 使用率排序
3. 查看堆栈,定位线程在干嘛,定位对应代码
首先,将线程 PID 转化为 16 进制。
工具:printf
方法:printf “%x\n” 10804
之所以要转化为 16 进制,是因为堆栈里,线程 id 是用 16 进制表示的。
接着,查看堆栈,找到线程在干嘛。
工具:jstack
方法:
jstack 10765 | grep ‘0x2a34’ -C5 --color
打印进程堆栈 通过线程 id,过滤得到线程堆栈