文章目录
  1. 1. linux中找到最耗CPU的那段Java代码

linux中找到最耗CPU的那段Java代码

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

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

可以按shift+p来按cpu排序。

  • 使用jstack dump对应PID的堆栈信息保存备查 jstack 17315 > jstack.out
    jstack栈信息
    几个比较有用的信息包括 线程名称、nid(native id, 一会儿会用到)、线程状态
  • 再次使用top查出对应PID中最耗cpu的子进程(java线程)top -p 17315 -H

17315子进程

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

  • 从dump下来的堆栈信息中查找耗费性能的代码块。dump下来的nid是十六进制的,而top查看的是10进制的,这里需要将10进制转化为16进制,并在jstack中查找。printf %0x 17316,这里得到43a4。
    此处输入图片的描述

基本就是这样一个步骤

文章目录
  1. 1. linux中找到最耗CPU的那段Java代码