思路:
1.定位进程导致CPU过载
2.线程导致CPU过载
3.代码导致CPU过载
开始操作:
执行top -c ,显示进程运行信息列表
键入P (大写p),进程按照CPU使用率排序
top -Hp 3406 ,显示一个进程的线程运行信息列表
键入P (大写p),线程按照CPU使用率排序
执行: printf “%x\n” 5956
16进制,是因为堆栈里,线程id是用16进制表示的。
执行查看堆栈信息:jstack 3406| grep ‘1744’ -C5 --color
通过线程id,过滤得到线程堆栈
找到了耗CPU高的线程对应的线程名称,以及看到了该线程正在执行代码的堆栈。