jstack可以定位到線程堆棧,根據堆棧信息我們可以定位到具體代碼,所以它在JVM性能調優中使用得非常多。
1、 壓測時,使用top命令查看哪個java進行占用了較多的CPU資源:
上圖中可以看出pid為9437的java進程占用了較多的cpu資源
2、通過top -Hp 9437可以查看該進程下各個線程的CPU使用情況
上圖中可以看出pid為9591的java線程占用了較多的cpu資源
Time列就是各個java線程耗費cpu的時間。
3、 將線程轉換為16進制后,查看線程日志
在線轉16進制:http://tool.oschina.net/hexconvert
Linux下查看線程日志:
jstack 進行數 | grep -A 10 線程16進制
由於查看的改線程查不到日志,補充一個能查到日志的線程。應該上述的流程