1. 程式人生 > >排查定位由死迴圈引起的cpu負載飆高或者死鎖

排查定位由死迴圈引起的cpu負載飆高或者死鎖

在linux下:

linux的top命令可以檢視程序的pid,我們找到java程式的pid,
然後執行 top -Hp pid 就可以檢視到這個程序下執行緒的執行情況。 

這樣粗略可以看到哪些執行緒比較繁忙,這時候就用到jdk自帶的小工具jstack(官方文件或者自行 百度)。

我們執行jstack pid > abc.txt    //意思是執行結果輸出到這個文字。

在這個文字中有很多的就是當前執行緒的執行情況。

文字中的執行緒pid是十六進位制的,top出來的是十進位制,所以十進位制轉十六進位制命令:printf "%x" 十進位制的執行緒id

 

jstack還有很多其他的引數,感興趣的可以自己看一下官方文件。

剛才輸出的abc.txt裡面就是我們執行緒執行的情況,那麼可以這麼排查定位:

當你top -Hp pid 可以檢視到cpu佔用高的執行緒,然後把這個執行緒pid轉換為十六進位制,開啟abc.txt檔案,搜尋這個十六進位制數,搜出來的結果就是要重點排查的!