2、透過使用top命令查詢該執行緒下CPU使用最高的執行緒
top -Hp pid: 即 top -Hp 2860
3、TIME列就是各個Java執行緒耗費的CPU時間,顯然CPU時間最長的是ID為2968的執行緒,用 printf "%x\n" 2968
可得到2968的十六進位制值為:b98
4、終於輪到jstack上場了,它用來輸出程序2860的堆疊資訊,然後根據執行緒ID的十六進位制值grep,如下:
可以看到CPU消耗在SessionTracker這個類的Object.wait(),於是就能很容易的定位到相關的程式碼了。
1