1.项目场景
首先我们模拟一个死循环,使CPU飙升到百分百
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ab171a47d39edcd772fdb04f1b522b59.png)
2.解决方案
1.通过top
命令,然后按shift+p
按照CPU排序,找到占用CPU过高的进程的pid
![在dada](https://i-blog.csdnimg.cn/blog_migrate/c853b8a6d81ffec5852405fd718750cc.png)
2.top -H -p [进程id]
找到进程中消耗资源最高的线程的id
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/775d17214093186221b49a3c1f6a6f94.png)
3.printf "%x\n" [线程id]
将需要的线程ID转换为16进制格式
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b6572e18771ffa5661127bb09e9a6666.png)
4.jstack [进程id] | grep -A 10 [线程id的16进制]
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bd64ebc1f137959be520415bc39c6bc2.png)
最后可以排查出在第20行的代码,导致了cup百分百,也就是我们开头模拟的位置。
如有不同看法,欢迎留言讨论。