1、查看java进程pid
[tomcat@localhost ~]$ jps -lm
![](https://img-blog.csdnimg.cn/img_convert/25102e9bbe60e8e273f713cfe5bfea94.png)
2、列出进程
[tomcat@localhost ~]$ jstack -l 22529
![](https://img-blog.csdnimg.cn/img_convert/fcc449747ac66fc6df06039e9ca3cae5.png)
3、定位线程
查看cpu占用高线程
top -Hp pid
转换线程ID
printf "%x\n" 22542
定位cpu占用线程
jstack 31593 |grep 7b97 -A 20
![](https://img-blog.csdnimg.cn/img_convert/ee2e958e515f2f9b809db7213e995b29.png)
[tomcat@localhost ~]$ jstack -l 1421 | grep 'java.lang.Thread.State' | wc -l
[tomcat@localhost ~]$ jstack -l 1421 | grep 'java.lang.Thread.State: RUNNABLE' | wc -l
[tomcat@localhost ~]$ jstack -l 1421 | grep 'java.lang.Thread.State: WAITING' | wc -l
[tomcat@localhost ~]$ jstack -l 1421 | grep 'java.lang.Thread.State: TIMED_WAITING' | wc -l
[tomcat@localhost ~]$ jstack -l 6413 | grep 'Java-level deadlock' | wc -l