Java进程如何定位消耗CPU的代码

2 篇文章 0 订阅

方法一:

第一步:top 命令,找到耗cpu的进程ID
第二步:查询这个进程下的各线程占cpu的情况:

ps -mp pid -o THREAD,tid,time

第三步:找到占用cpu比较多的线程,将tid 转成16进制为
第四步:使用jstack命令寻找该线程

jstack pid|grep -A 5 tid(16进制)

方法二

第一步: 获取CPU负载最高的Java进程ID(按CPU负载从高到底排)
ps aux --sort=-%cpu | grep java
第二步: 根据进程ID查询CPU负载高的线程ID(按CPU负载从高到底排) ps -mp [进程ID] -o THREAD,tid,time | sort -k 2 -r -n
第三步: #根据线程ID查询问题代码
sudo jstack [进程ID] |grep -A 5 printf "%x" [线程ID]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值