定位JVM中占CPU较高的堆栈

疑问:

在linux中,使用top命令,发现某java进程占用CPU较高,如何定位到是那个线程,执行哪些代码导致的呢?

 

第一步:找到占用CPU较高的进程号,使用top命令查看。


从上图可以看到,java进程号为759的进程占用cpu特别高。


第二步:查看当前进程759所有线程占用cpu情况

使用top –Hp pid 来查看,shift + t命令展示或关闭线程情况。


从上图,可以看出760的java线程占用CPU较高。


第三步:查看760线程的堆栈信息。

使用命令 jstack 759 | grep –A 100x2f8

其中jstack是java命令,可以在JDK bin目录找到该命令。759为上述 java进程号,-A表示查询到所在行后10行。0x2f8是java线程760转化为十六进制,注意全部转化为小写。


如上图,打印了java堆栈信息,可以根据堆栈信息,检查代码,查找并分析占用CPU过高原因。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值