1. 程式人生 > >windows伺服器java專案cpu佔用較高原因分析

windows伺服器java專案cpu佔用較高原因分析

前言

  • 在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

可以具體定位到程式碼的位置