查看某个线程占得CPU高

时间:2022-12-22 08:44:13

jps得到pid

pidstat -p [pid] -t 1 5        -t表示显示该进程里面所有的线程的信息

06:20:32 PM      TGID       TID    %usr   %system  %guest    %CPU   CPU     Command
06:20:32 PM      2996         -      6.16    0.22      0.00      6.38    18    java
06:20:32 PM         -           2996    0.00    0.00      0.00      0.00    18    |__java
06:20:32 PM         -           3068    0.00    0.00      0.00      0.00     1    |__java
06:20:32 PM         -           3069    0.12    0.00      0.00      0.12    31    |__java
06:20:32 PM         -        3070    0.12    0.00      0.00      0.12    12    |__java
06:20:32 PM         -        3071    0.12    0.00      0.00      0.12    18    |__java
06:20:32 PM         -        3072    0.12    0.00      0.00      0.12     8    |__java

比如使用线程ID : TID 2996,

转换成16进制:echo '3068' | awk '{printf("\\x%02x\\x%02x\n", $1/256, $1%256);}'      得到 \x0c\x1a

jstack -l [pid] >> textFile

去jstack的输出文件textFile中找 nid为 c1a 的那一项,一般占cpu较高的线程是JVM的GC线程。