windows伺服器java專案cpu佔用較高原因分析
阿新 • • 發佈:2019-01-24
前言
- 在windows平臺上要找出到底是哪個執行緒佔用的cpu還不那麼容易,linux用top就簡單多了最後的解決方法:
1.找到java程序對應的pid。
- 找pid的方法是:開啟工作管理員,然後點選 “檢視” 選單,然後點選 “選擇列”,把pid勾上,然後就可以在工作管理員裡面看到所有程序的pid值了。(也可以用第三步中提到的工具直接檢視)
2.然後把java程序匯出快照。直接執行命令。
jstack -l 31372 > c:/31372.stack
- 我這裡是指定把java所有的資訊匯出到c盤的31372.stack的檔案裡。
3.使用微軟提供的 Process Explorer v15.3
在windows下只能檢視程序的cpu佔用率,要檢視執行緒的cpu佔用率要藉助其他的工具,我這裡用的是Process Explorer v15.3
Process Explorer v15.3下載地址右鍵點選需要檢視的程序—properties
4.找到執行緒的tid
- 然後選擇 Threads 選項卡,找到佔用cpu的執行緒的tid,比如我這裡是 31876 的執行緒
5.把pid轉換成16進位制
- 我這裡直接用系統自帶的計算器轉換,置於為什麼要轉換,是因為先前用jstack匯出的資訊裡面執行緒對應的tid是16進位制的。
- 最後得到的執行緒pid的16進位制的值為 7C84
6.在 c盤的31372.stack檔案中查詢 7C84
可以具體定位到程式碼的位置