首页 > 系统服务 > 详细

linux--关于JVM CPU资源占用过高的问题排查

时间:2019-02-28 19:15:37      阅读:191      评论:0      收藏:0      [点我收藏+]

一、背景:
    先执行一个java程序里面开了两个线程分别都在while循环做打印操作。    

 

# java -cp ./test-threads.jar com.spiro.Main
二、现象:
    通过top命令查看当前CPU情况

 

    可以看到有个java进程占用CPU过高,下面来排查是什么线程的什么代码导致CPU过高。

三、步骤
    先获得PID为2023,上图可以看到,或者通过jps命令获取。 执行以下命令:   

# top -H -p2023
说明: -H 指显示线程,-p 是指定进程

    结果:

 


    可以看到两个CPU占用较高的线程,记下PID 2033和2034 ( 此处的PID即为线程ID标识) ,将其从十进制转成十六进制表示,可通过windows自带的计算器来转。得到结果分别为7f1和7f2

    再通过jstack命令获取当前线程栈,可暂时保存到一个文件tempfile.txt中;  

# jstack -l 2023 > tempfile.txt
在tempfile.txt中查找nid=0x7f1的线程: 

 

    可以看到我们找到的线程Thread-0,以及该线程的状态和正在执行的代码行,本例中显示当前正在执行Worker类的15行。然后可去代码中查看不合理的逻辑

 

四、总结
    该方法很有用,多次使用该方法定位出程序中的性能问题,在此分享和记录。
---------------------
作者:iteye_13098
来源:CSDN
原文:https://blog.csdn.net/iteye_13098/article/details/82675129
版权声明:本文为博主原创文章,转载请附上博文链接!

linux--关于JVM CPU资源占用过高的问题排查

原文:https://www.cnblogs.com/mmz-tester/p/10452509.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!