首先确定是那个进程导致到CPU飙升
通过top命令查看出具体的那个进程cpu飙升
然后找到CPU占用率的进程的PID,紧接着执行查看当前或者进程中那个线程的占用率高
top -H -p 进程PID【也可以用 Ps -mp pid -o THREAD,tid,time 查看】
然后将线程号1056转成16进制
printf %x 1056【线程PID】
这里需要注意的是将进程id转成16进制的原因是因为,在堆栈信息中线程的id是以16进制的形式存放的
然后就可以查看当前这个线程中栈中具体的信息了
jstack 进程PID|grep 线程PID -A60
-A是打印符合条件后n行,-C是环绕n行,-B是之前n行
然后需要注意点的是
根据堆栈信息和线程状态,分析cpu占用原因。
如果线程状态是BLOCKED,就是线程阻塞中