首先说明图片都是黑马程序员课上的图片,为了更好理解,所以我把他们的运行截图直接拿来了,因为我的虚拟机上没有JAVA相关的东西。
比如出现了CPU占用过多问题我们应该怎么做?(其他的也是类似的)
1.用nohup java 命令后台运行程序
2.用top定位哪个进程对cpu的占用过高
以上图片可以看到32655的进程号占用CPU过多
3.ps H -eo pid,tid,%cpu|grep 进程id(用ps命令进一步定位,哪个线程引起的cpu占用过高)
此时可以看到线程id 32665占用的CPU过高
4.jstack 进程id
5.对你的线程id进行一个16进制的转换
我们这里转换之后是一个7F99
此时再看我们jstack出来的信息,说明了你的哪个类哪行出现了问题
此时再看我们的代码第8行
有一个while(true)问题就在这里
总结:
1.用nohup java 命令后台运行程序
2.用top定位哪个进程对cpu的占用过高
3.ps H -eo pid,tid,%cpu|grep 进程id(用ps命令进一步定位,哪个线程引起的cpu占用过高)
4.jstack 进程id,根据线程id的16进制找到出错地方