情况1 CPU占用过多
使用 jstack 命令
如以下代码:
/**
* 测试类
*
*/
public class A {
public static void main(String[] args) throws InterruptedException {
while (true){
//Thread.sleep(100);
System.out.println(1);
}
}
}
某个线程陷入死循环,一直占用着CPU在工作
1 让这段代码跑起来
2 使用top
命令查看进程与cpu占用情况
3 可以看到占用CPU将近一半
使用命令ps H -eo pid,tid,%cpu | grep 进程号
根据进程号查看其具体线程,找到cpu占用率高的线程
4 使用命令jstack 线程ID
查看线程具体情况
找到我们自己的线程,可以看到下边写着locked at 9,也就是我们打印1那行,因为是死循环,所以这行一直执行,使用jstack命令我们找到了问题所在