IntelliJ IDEA中java程序占用CPU过高的调试方法
描述
IntelliJ IDEA中web工程部署到tomcat一段时间后出现CPU占用达到100%的问题
一、下载process explorer查看高占用进程
process explorer是Windows系统和应用程序监视工具。
process explorer下载:https://technet.microsoft.com/en-us/sysinternals/bb896653/
可以看到一个java.exe占用cpu超过77%,双击java.exe弹出右边界面,显示进程中线程信息。我们将java.exe所在进程数(如8800)和占用
较高的几个子线程数(如5424、2240、3472、9104、9856、1144)记录下来。
二、输出进程信息
在IntelliJ IDEA的Terminal中输入 jstack -l pid > file.txt (pid为之前记录的进程数,Process Explorer中可以看到)
可以看到在工程目录下生成了指定进程信息的文件
三、读取进程信息
打开进程信息文件,我们需要找到是进程中哪几个线程占用了cpu的资源。将之前记录的子线程数转成16进制的形式。
(5424、2240、3472、9104、9856、1144分别对应nid=0x1530、0x8c0、0xd90、0x2390、0x2680、0x478)
然后在得到的进程文件中分别查找对应线程正在执行的java代码行。
查找完成,6个占用最高的线程都是重复执行在以上两个位置。这个问题我还没有解决,解决完后会再次编辑。
四、相关链接
https://www.cnblogs.com/bingyimeiling/p/10278477.html
https://blog.csdn.net/moest/article/details/52034326