分析java线程占用cpu或者内存高的代码

本文介绍了一种排查Java应用程序中线程CPU占用率过高的方法。通过使用top命令找到高负载进程,再利用jstack命令定位具体线程,最终分析出导致CPU负载高的原因可能是Kafka持续监听消息造成的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析java线程占用cpu或者内存高的代码

1、通过top查看占用cpu或者内存高的进程截图如下【备注输入大写P以cpu从大到小排序,大写M以内存大小排序】

2、通过对应的cpu找到PID也就是进程对应的pid,然后找到java进程106854这个进程id

3、通过命令top -Hp PID 例如top -Hp 106854

就可以列出该进程下的所有线程id

4、通过输出大写的P查看线程占用cpu最高的或者通过大写M查看内存占用最高的

然后找到109391这个线程id

5、使用命令printf “%x\n” 109391 输出对应的十六进制码,1ab4f这个码是为了过滤线程id查到对应的代码

6、使用命令jstack PID|grep 1ab4f  【备注PID是进程的id,1ab4f是这个进程下的一个线程占用最高的cpu十六进制码】

7、通过上面的输出发现kafka,所以会联想到,kafka一直监听消息,所以消耗cpu,正常现象

8、如果出现自己写的类,说明需要修改代码逻辑了

再次感谢各位大佬的赏识与参考,有不对的地方希望指出,我也会尽快的修正和学习

转发也希望博主可以附上链接,谢谢参考

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值