1、使用top命令,找出占用CPU最高的进程号
2、使用top -Hp 36032,查看36032进程中所有线程的运行信息
3、使用printf %x 36044命令将线程号36044转换成十六进制
4、使用jstack 36032命令将进程栈信息输入到1.txt文件,再用cat 1.txt | grep -A 30 8ccc命令查看进程栈信息,并定位CPU占用过高代码位置。
5、定位代码结果,有死循环
public class HoldCPU {
public static class HoldCPUTask implements Runnable {
@Override
public void run() {
while (true) {
double a = Math.random() * Math.random();
System.out.println(a);
}
}
}
}