linux中找到最耗CPU的那段Java代码
linux中找到最耗CPU的那段Java代码
laichendong 发表于3年前
linux中找到最耗CPU的那段Java代码
  • 发表于 3年前
  • 阅读 120
  • 收藏 1
  • 点赞 1
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

在这里总结一下查找linux,sun JDK环境下最耗CPU性能的java代码段的方法。基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程)。使用jstack把java线程堆栈给dump下来。然后,在堆栈信息中查找出对应的代码块。具体操作如下:

一、使用top查找出最耗cpu的进程号(PID)

2013011622221320130116215224(提示:可以按shift+p来按cpu排序。) 这里我们看到最耗cpu的进程是:17315

二、使用jstack dump对应PID的堆栈信息保存备查

20130116215630 这没什么好说的。有时候需要加-F (强制选项)。另外,在jdk1.6.0.23之前,有一个bug。无法用这种方法dump下详细的堆栈信息。只有线程号。 dump下来的文件内容大概长这样:20130116220414几个比较有用的信息包括 线程名称、nid(native id, 一会儿会用到)、线程状态

三、再次使用top查出对应PID中最耗cpu的子进程(java线程)

2013011621582220130116215957top命令使用-p参数来指定进程号,-H参数来显示线程。这里可以看到最耗cpu的进程(java中的线程)是17316

四、从dump下来的堆栈信息中查找耗费性能的代码块

从上面开到,我们用top找出来的pid是十进制的。而dump下来的nid是十六进制的。其实他们是一个东西。只是进制不同。于是我们利用printf命令格式化来转换一下进制(当然,也可以用其他方式): 20130116221543   20130116221709 通过在vim中查找,就能找到问题所在了。 :D 20130116221855

好了,基本就是这样一个步骤,对于分析线上问题还是有一定帮助的。have fun!

标签: cpu 100% java linux 性能
共有 人打赏支持
粉丝 9
博文 85
码字总数 71483
×
laichendong
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: