1. 程式人生 > >JVM定位佔用cpu過高堆疊資訊(Linux)

JVM定位佔用cpu過高堆疊資訊(Linux)

第一步:使用top命令檢視程序佔用CPU的情況,獲取PID

top                                                                                                                                                                    

 

從圖中可以看出cpu佔用高達46.5%的程序ID是16243

第二步:使用top -H -p命令獲取程序中執行緒資訊(其中H:顯示程序中執行緒的情況,p表示程序pid)

top -H -p 16243


上圖中最高的執行緒pid=17466

第三步:獲取最高的執行緒pid(十進位制,裝換成十六進位制),十進位制轉十六進位制可以手動計算也可以用python -c "print hex(執行緒PID)"


第四步:檢視執行緒堆疊資訊,jstack pid(程序pid) | grep 執行緒pid


grep有三個比較好用的引數,-A 10顯示關鍵字之後10行 -B 10 顯示關鍵字之前10行 -C 10 顯示關鍵字前後10行

從上圖中可以看到doFreshRoomChatInfoFromRedis方法消耗了大量CPU時間。到了這裡,剩下的就是分析程式碼了。