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對比,找到問題線程和問題類