一、問題描述 Tomcat下麵部署很多個java項目的war包,tomcat啟動一段時間後,發現cpu占用過高,整個界面卡死! 二、通過process explorer查看java進程下的線程 process explorer是Windows系統和應用程式監視工具。 process explorer ...
一、問題描述
Tomcat下麵部署很多個java項目的war包,tomcat啟動一段時間後,發現cpu占用過高,整個界面卡死!
二、通過process explorer查看java進程下的線程
process explorer是Windows系統和應用程式監視工具。
process explorer下載:https://technet.microsoft.com/en-us/sysinternals/bb896653/
下載後直接打開即可:
使用PID為3764的進程,點開javaw.exe進程:
這時候會發現TID為4060(10進位)的線程占用CPU最高,下麵找到該進程在項目中的位置。
三、通過jstack把進程下所以的Java線程棧的內容列印出文本中
jstack是java虛擬機自帶的一種堆棧跟蹤工具,用於生成虛擬機當前時刻的線程快照,包含虛擬機中每一個線程正在執行的方法堆棧的集合,用於定位線程出現長時間停頓的原因,如死鎖、死迴圈、外部資源長時間等待等
在cmd命令里輸入:jstack -l 3764 回車:
將4060(TID)十進位轉成16進位(線上工具:http://tool.oschina.net/hexconvert/)為fdc;
找到nid=0xfdc,找到後面對應的java類對應的行數,即可定位到問題。