linux中找到最耗CPU的那段Java代码
更新日期:
linux中找到最耗CPU的那段Java代码
sun JDK环境下最耗CPU性能的java代码段的方法。基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程)。使用jstack把java线程堆栈给dump下来。然后,在堆栈信息中查找出对应的代码块。
- 使用top查找出最耗cpu的进程号(PID)
可以按shift+p来按cpu排序。
- 使用jstack dump对应PID的堆栈信息保存备查 jstack 17315 > jstack.out
几个比较有用的信息包括 线程名称、nid(native id, 一会儿会用到)、线程状态 - 再次使用top查出对应PID中最耗cpu的子进程(java线程)top -p 17315 -H
top命令使用-p参数来指定进程号,-H参数来显示线程。这里可以看到最耗cpu的进程(java中的线程)是17316
- 从dump下来的堆栈信息中查找耗费性能的代码块。dump下来的nid是十六进制的,而top查看的是10进制的,这里需要将10进制转化为16进制,并在jstack中查找。printf %0x 17316,这里得到43a4。
基本就是这样一个步骤