示例程序:
public class Test {
public static void main(String[] args) {
while(true){
System.out.println("hello");
}
}
}
1.查找占用CPU过高的进程
使用top命令查看
top

或者使用ps命令也可以
ps -ef|grep java

我们找出了14489这个进程占用CPU过高。那下边就是确定具体的线程。同样我们可以使用两种方法
2. 找到具体线程
top -H -p 14489

ps -T -p 14489

我们找出是14490这个线程可能存在问题
3 查找具体代码
将线程编码转换为16进制
printf '%x\n' 14490
输出是389a
然后利用jastack命令查找具体代码
jstack 14489|grep 389a -A60

网友评论