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過多,由於這個線程不是業務線程,所以沒有過多的堆棧信息,否則的話可以根據堆棧信息定位出具體的異常代碼。