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 ", $1/256, $1%256);}' 得到 x0cx1a
jstack -l [pid] >> textFile
去jstack的输出文件textFile中找 nid为 c1a 的那一项,一般占cpu较高的线程是JVM的GC线程。