標籤:com 運行 進位 計算 cpu reads man ble his
1.找到java進程對應的pid。通過工作管理員。linux---top
2.然後把java進程匯出快照。直接運行命令。stack -l 31372 > c:/31372.stack
3.在windows下只能查看進程的cpu佔用率,要查看線程的cpu佔用率要藉助其他的工具,我這裡用的是微軟提供的 Process Explorer v15.3
右鍵點擊需要查看的進程---properties
linux下先輸入top,然後再按shift+h 或“H”,此時開啟的是線程視圖,pid為線程號
4.然後選擇 Threads 選項卡,找到佔用cpu的線程的tid,比如我這裡是 31876 的線程
5.把pid轉換成16進位,我這裡直接用系統內建的計算機轉換,置於為什麼要轉換,是因為先前用jstack匯出的資訊裡麵線程對應的tid是16進位的。
cmd---calc---計算機左上方選擇程式員,可進位轉換 。最後得到的線程pid的16進位的值為 7C84
6.在 c盤的31372.stack檔案中尋找 7C84
Thread-23" prio=6 tid=0x03072400 nid=0x1b68 runnable [0x0372f000]
java.lang.Thread.State: RUNNABLE
at com.horn.util.MyEncrypt.encode(MyEncrypt.java:17)
at com.horn.common.OrderUtil.hisExp(OrderUtil.java:228)
at com.horn.util.MsgManage.receiveMsg(MsgManage.java:961)
at com.horn.util.PollMessageThread.run(PollMessageThread.java:74)
Locked ownable synchronizers: - None
windows下揪出java程式佔用cpu很高的線程