如何定位cpu占用率高的java線程
工具:
1
jstack:jstack用于列印出給定的java程序ID或core file或遠端調試服務的Java堆棧資訊,如果是在64位機器上,需要指定選項"-J-d64",Windows的jstack使用方式隻支援以下的這種方式。
pidstat :pidstat主要用于監控全部或指定程序占用系統資源的情況,如CPU,記憶體、裝置IO、任務切換、線程等。pidstat首次運作時顯示自系統啟動開始的各項統計資訊,之後運作pidstat将顯示自上次運作該指令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。
top:或者jps找到java程序PID,或者 或者 ps -Lfp pid
通過%CPU和 TIME,判斷占用的線程TID
找到TID,轉換成16進制,然後在上面(jstack 程序id > ps.txt)導出的檔案中搜尋,就可以定位到具體的線程,類。
2、或者:
jstack -l pid > /home/1.tdump
再通過看線程 :pidstat -p pid(java程序ID) -u -d -t -w -h 1 1000
找到TID,轉換成16進制,然後在上面(jstack 程序id > 1.tdump)導出的檔案中搜尋,就可以定位到具體的線程,類。
3、可以下載下傳1.tdump到本地查找
本文轉自 知止内明 51CTO部落格,原文連結:http://blog.51cto.com/357712148/1963585,如需轉載請自行聯系原作者