如何找出消耗CPU最多的线程?
1.使用 top -c 找出所有当前进程的运行列表
top -c
2.按P(Shift+p)对所有进程按CPU使用率进行排序,找出消耗最高的线程PID
显示Java进程 PID 为 136 的java进程消耗最
3.使用 top -Hp PID,查出里面消耗最高的进程,继续按P((Shift+p))排序
top -Hp 136
4.找到最消耗CPU的线程pid
这个线程PID是十进制的,将十进制线程pid转换为十六进制
按P(Shift+p)
可以看到 188 CPU消耗最高
printf "%x\n" 188
转换为十六进制:bc
5.保存线程栈信息
jstack -l 136 > ./136.stack
查看最消耗cpu的线程信息
jstack 136| grep 0xbc -A 10
6. 查看信息
cat 136.stack | grep '0xbc' -C 8
或者
less 136.stack
在搜索0xbc
参考:top命令的常用方式