查找最消耗cpu的java线程

  2中方法, 推荐第二种 .   

1. top 找到最消耗的java进程id 

2.  ps -mp pid -o Thread ,tid ,time

查找最消耗cpu的java线程

 

3.   转换为16进制   printf "%x\n" nid

查找最消耗cpu的java线程

 4 .  jstack  pid  | grep nid -A 30  最后一个命令 -A 30 是显示匹配后面30行 ,就找到堆栈信息了 

 

下面是第二种方法 :

     1. 首先找到java 进程id, 可以使用 ps -ef |grep java.  或者用top查看最消耗的java进程

     2. top -Hp pidOfJava   截图如下 , 截图有点失败, 都是0.0, 不过没关系, 注意这图里面的pid是java线程id

     查找最消耗cpu的java线程

3. 随后,用pid 转化为16进制的,可以用c 函数, printf "%x\n" pid 。 最后,  jstack pid | grep 16进制nid  -A 30. Ok,,找到

  查找最消耗cpu的java线程