查看进程里面各线程占用CPU的情况

在开发中,当我们遇到CPU飙高的时候,想要知道是哪个线程在搞事情,就需要查看进程里面各线程占用CPU的情况,这个命令就可以帮助我们。

执行命令:

ps H -eo pid,tid,%cpu |grep 2266

2266为java进程id

执行结果如图(可以看出2276占用cpu很高),

那怎么看这个2276在我们代码所在呢,其实可以使用jstack命令查看栈信息,但是所看到里面的线程id是16进制的,这里的2276是十进制,要找到2276所对应的16进制id在哪里就需要做一个转换,再拿这个16进制去匹配就可以了,具体做法:

2276十进制转16进制,运行命令:

printf "%x \n" 2276

得到的8e4就是16进制

在执行命令:jstack 2266

d打印的信息如图,在里面就可以看见8e4对应的线程(8e4前面的0x代表的16进制)

在这个图中,可以看到这个线程id对应的代码里面报了Application.java的第9行有问题,那么再去看自己的代码就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值