准备一个Java程序

在第7行写了个死循环🔄:
image.png

使用top查看进程ID

可以看到进程id为16674 Java进程占用CPU比较高
image.png

根据进程ID查看线程

使用top -Hp 16674命令,可以看到线程ID为16688的线程占用CPU比较高:
image.png

根据线程ID查看堆栈

使用jstack 线程ID命令,再配合grep过滤线程ID,这里需要把线程ID转换为16进制(使用printf %x命令):
image.png

总结

top定位到进程,top -Hp定位线程,jstask定位到代码行。