本文主要是介绍java服务CPU占用过高,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1、查看占用CPU高的进程
- 2、查看服务线程信息
- 3、查看问题线程状态
- 4、jstack查看线程信息
- 5、代码问题排查
以下代码没有特殊说明,都是指终端命令行操作
1、查看占用CPU高的进程
top
![在这里插入图片描述](/upload/202107/21/202107212221522929.png)
2、查看服务线程信息
ps -mp 183 -o THREAD,tid,time
![在这里插入图片描述](/upload/202107/21/202107212221524975.png)
3、查看问题线程状态
通过上一步,我们可以看到TID为220的线程占用cpu比较高。
转化为16进制方便后续查询。
printf "%x\n" 220
![在这里插入图片描述](/upload/202107/21/202107212221525913.png)
查看该线程运行状态。
jstack 183 | grep dc
![在这里插入图片描述](/upload/202107/21/202107212221526864.png)
4、jstack查看线程信息
jstack 183
![在这里插入图片描述](/upload/202107/21/202107212221529691.png)
5、代码问题排查
从上一步我们可以定位到ValueLoad类中的print()接口,再结合我们的代码逻辑具体分析。
![在这里插入图片描述](/upload/202107/21/202107212221533471.png)
这篇关于java服务CPU占用过高的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!