記錄作業點滴,
環境linux,
1.模擬問題重現
/**
* linux中寫一個Test.java
*/
public class Test {
public static void main(String[] args) {
int random = 0;
while (random < 100) {
random = random * 10;
}
}
}
#linux 中編譯,運行該類
>javac Test.java
>java Test

2.查消耗cpu最高的行程PID
>top -c #顯示整個命令列而不只是顯示命令名 ,查找消耗CPU較大的行程PID
#查詢結果如下圖,PID=23209的行程消耗CPU最多

3.根據PID查出消耗cpu最高的執行緒號
>top -Hp 23209 ,顯示一個行程的執行緒運行資訊串列,按下P,行程按照cpu使用率排序
#查詢結果如下圖,PID=23210的執行緒消耗CPU最多

4.十進制執行緒號轉為十六進制
網上隨便找一個在線的“十進制執行緒號轉為十六進制” ,轉換結果如下圖,23210轉為16進制是5aaa

5.執行命令,匯出行程快照
>jstack -l 23209 > 23209.stack
然后執行,grep命令,看執行緒5aaa做了什么
>cat 23209.stack |grep '5aaa'
最終結果如下圖,可以看到定位出Test.java檔案的第五行有問題

6.根據提示修改代碼
>vim Test.java #進入編輯
>set nu #顯示行號
如果是系統程式部署到linux中,在idea中快捷鍵shift + shift 定位類名,ctrl + g定位出行號

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/204794.html
標籤:AI
上一篇:通俗易懂,帶你從零認識Spring IoC,把你安排得明明白白。
下一篇:CPU、記憶體優化分析-1
