定位应用的CPU杀手

     如果一段代码写的比较差,如多次无谓的循环,或者由于bug产生了死循环,我们可以借助linuxjava的命令把它揪出来,许多应用如果经常按照下面的 方法定期进行自检,对于提高系统的处理能力大有好处。

 

1步:查看目前cpu时间占用较高的线程:

首先根据top -H命令查看当前的线程信息(注意,不是进程),然后按大写的 O 键,可以选择你期望的排序字段。如可以按照cpu的占用时间(time+)来排序。

你也可以按top -H命令后按c直接查看目前占用cpu较高的线程。按q键退出查看。

如果能够确定cpu是被java进程占用,可以执行 top -H -p $JAVA_PID 过滤掉没用的线程信息。 

 

注意:top命令会对系统的性能有影响,需要慎用。

 

2步:通过jstack命令打印目前虚拟机内的详细线程信息

执行命令 /opt/jdk/java/bin/jstack $JAVA_PID 打印线程信息,为了方便查找,可以将输出的结果重新定位到临时文件里。 

  

3 :将第1步中找到的10进制的线程PID号转换为16进制,然后在第2步中找到对应的线程信息(nid=0x...)。

 

以上三步,需要你多次执行,反复对比,如果都是在跑类似的代码,那么这段代码很有可能就是你应用的cpu杀手。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值