Java线程运行诊断

首先说明图片都是黑马程序员课上的图片,为了更好理解,所以我把他们的运行截图直接拿来了,因为我的虚拟机上没有JAVA相关的东西。

比如出现了CPU占用过多问题我们应该怎么做?(其他的也是类似的)

1.用nohup java 命令后台运行程序

2.用top定位哪个进程对cpu的占用过高

Java线程运行诊断_第1张图片

Java线程运行诊断_第2张图片

以上图片可以看到32655的进程号占用CPU过多

3.ps H -eo pid,tid,%cpu|grep 进程id(用ps命令进一步定位,哪个线程引起的cpu占用过高)

Java线程运行诊断_第3张图片

此时可以看到线程id 32665占用的CPU过高

4.jstack 进程id

 

 

 5.对你的线程id进行一个16进制的转换

Java线程运行诊断_第4张图片

 

 

 我们这里转换之后是一个7F99

此时再看我们jstack出来的信息,说明了你的哪个类哪行出现了问题

Java线程运行诊断_第5张图片

 

 

 此时再看我们的代码第8行

Java线程运行诊断_第6张图片

 

 

 有一个while(true)问题就在这里

总结:

1.用nohup java 命令后台运行程序

2.用top定位哪个进程对cpu的占用过高

3.ps H -eo pid,tid,%cpu|grep 进程id(用ps命令进一步定位,哪个线程引起的cpu占用过高)

4.jstack 进程id,根据线程id的16进制找到出错地方

 

你可能感兴趣的:(Java线程运行诊断)