1、TOP命令定位异常进程
top
top命令介绍参考:https://blog.csdn.net/xtggbmdk/article/details/82818023
2、通过 top -H -p pid 查看异常的线程
top -H -p 225
3、printf "%x/n"线程号 #将异常线程转化为16进制
printf "%x\n" 392
4、使用jstack 进程号|grep 16进制异常线程号 -A90,来定位异常代码的位置(最后的-A90是日志行数,也可以输出为文本文件或使用其他数字)。可以看到异常代码的位置
jstack 225|grep nid=0x188 -A90
通过结果可以看出是"C2 CompilerThread9" 这个线程占用CPU过多,由于这个线程不是业务线程,所以没有过多的堆栈信息,否则的话可以根据堆栈信息定位出具体的异常代码。