JVM定位程序假死或cpu占用高的線程


linux系統:

參考:https://blog.csdn.net/qq_40197576/article/details/80287515

1>使用top命令查看占用cpu進程情況,得到java進程pid

2>使用jps命令簡單的列出java進程pid與類名

3>根據java進程pid,使用pidstat定位是那些線程的原因

pidstat -p 進程id 采樣間隔時間與次數 -u(-u是監控cpu) -t (-t顯示線程)

看占用cpu最高的線程id

4> 使用jstack命令輸出線程信息

jstack java進程pid

5>將第<3>步得到的線程id轉換為16進制,與第<4>步中的線程id對比,定位到問題線程和問題類

window系統:

方法一:可以在java/jdk/bin目錄中找到jconsole(java監視管理控制台),在里面查看內存,線程,類,從而找到問題

方法二:參考:https://blog.csdn.net/qq_29664253/article/details/81111717

1>通過任務管理器,找到java進程pid

2>然后把java進程導出快照,直接運行命令 jstack  -l pid >c:a.txt

3>在windows下只能查看進程的cpu占用率,要查看線程的cpu占用率要借助其他的工具,我這里用的是微軟提供的 Process Explorer

4>找到java進程pid-->properties-->threads-->找到占用cpu最高的線程id

5>將第四步的線程id轉換為16進制,與a.txt文件中的線程id對比,找到問題線程和問題類


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM