前言:
今天同学们对“javacpu过高是什么原因”大致比较关切,同学们都想要剖析一些“javacpu过高是什么原因”的相关文章。那么小编同时在网络上汇集了一些关于“javacpu过高是什么原因””的相关知识,希望同学们能喜欢,同学们快快来学习一下吧!1.利用windows工具定位到线程
1、方法一
①打开任务管理器,找到占用CPU多的进程
②使用window自带命令pslist,找到线程
注:如果pslist命令不识别即没有安装,则上微软官方网址下载,下载完将其解压到C:\Windows\System32路径下即可使用。
2、方法二,利用微软提供的Process Explorer工具(后来补的方法,所以进程id、线程id跟方法一不同)
右键--properties,查看线程信息
注:下载地址:
2.利用JVM命令打印线程dum文件
jstack 31304 >> E:\threadInf.log
3.定位到问题线程
1.windows下的线程(十进制)转换成(十六进制)
29872 (十)→74B0 (十六)
2.在threadInfo.log文件中找到“74B0”
4.解决bug
分析:这段代码虽然没有进入死循环,但频繁的去进行检查操作,占用大量的CPU资源,
这中间应该停歇一下。
修改代码后,CPU使用率明显降下来了。
总结:windows可以查看线程的动态过程,dum文件拿到是虚拟机某一时刻线程执行状态信息,所以需要两者结合使用。