如何分析jvm dump线程

如果你的JAVA程序CPU占用率很高或者一直保持在一个很高的线上,说明有的线程占用的CPU的资源,这个时候,就需要分析一下,是什么线程占用的CPU的使用率

当前CPU被当前JAVA的哪个线程占有,是否是必要的,是否要优化了

下面简单的说说,如何使用JVM自带的jstack来找到是哪个线程占用cpu使用率的过程

首先,要知道是JAVA进程内的哪个线程占用了比较高的CPU。

1.top -H <java pid>  //查看占CPU使用率的进程排名

2.使用jstack查看进程

jps

查看当前java进程

jstack <java ipd> ]|grep -A 10 [线程的16进制] 

2.使用shift+h 进程线程视图,查看线程ID。


如上图,可以看到两个线程18006和18005占用了100%和99%的CPU。


linux上的线程ID是10进程的,JUMP出来的线程ID是16进制的,使用计算器换算一下,分别得到两个线程ID是4655,4656。


可以看到。两个ID在dump文件中的代码了。

跟代码中一致,这边我写了个

while(true){

}去receive socket的返回。一直在轮询。导致 CPU居高不下。

每次轮询完。Sleep一下就可以结均这个问题



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值