1:代码准备
死循环打印随机数
public class TestCPUHigh {
public static void main(String[] args) {
while (true){
System.out.println(new java.util.Random().nextInt(66669999));
}
}
}
2:现象
pid = 5783的进程占用很高
3:诊断
3.1:top
3.2:定位到进程 jps
3.3:定位到代码
具体的线程 pid 5783
ps -mp 5783-o THREAD,tid,time
3.4:进制转换
线程id换成 16进制 (字母小写,如果有字母的话)图中线程占用时间较长的是 TID=5784 转换成16进制 1698
3.5:jstack定位
jstack 5783 | grep 1698 -A60
查看堆栈信息 60行
3.6:找熟悉的类
找到从自己项目里面出来的类 找到TestCPUHigh.java的第6行,诊断完毕