1.top命令查看占用CPU的情况

 

2.找到那个进程占用的CPU最高,并记录下进程ID (40940)

3.查看进程中的线程信息ps H -eo pid,tid,%cpu | grep 进程ID

  找到进程对应的线程id

  或者 top -H -p 进程id 直接打印该进程下的所有线程使用率信息

image

 然后把线程id转为16进制

 printf "%x\n"  18745

# 获取指定线程的堆栈信息

jstack <pid> | grep 十六进制线程名称 -A 20 显示前面多少行 (-B显示后面多少行) 此时就定位出来代码问题

 

4.jstack 进程id 

jstack 4033644 > jstack.log 也可以把日志写到文件去定位

printf "%x\n"  123255

最后对比转换出来的16进制的线程id和jstack打印的线程id对比,从而找到有问题的代码