龙空技术网

定位、解决java应用占用CPU过高问题

小李飛猫 187

前言:

今天同学们对“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文件拿到是虚拟机某一时刻线程执行状态信息,所以需要两者结合使用。

标签: #javacpu过高是什么原因 #java游戏运行内存过高怎么解决