Java 命令 jps 与 jstack 快速定位线程状态

Posted 知行合一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 命令 jps 与 jstack 快速定位线程状态相关的知识,希望对你有一定的参考价值。

在项目中,当程序处于长时间停顿的时候,可以使用java提供的jstack命令跟踪正在执行方法的堆栈情况,jstack能够生成虚拟机当前时刻的线程堆栈情况。主要,监控线程的状态,判断出线程停顿的原因。例如,死锁,死循环,多个线程等待等等。线程的状态包括NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED。

 

1、线程状态跟踪

(1) jps 

jps命令,查询正在运行的虚拟机java进程,一般显示信息就是,pid和进程名称:

 

 

(2) jstack

使用jstack [pid] 输出当前进程的堆栈信息。主要有两种使用方式,如下:

 

 

  将堆栈信息输出到执行文件 jstack pod > file,输出pid 11840的进程堆栈信息存储到dump11840文件中,执行命令jstack 11840 > C:\\Users\\86151\\Desktop\\dump11840。结果如下:

 

以上是关于Java 命令 jps 与 jstack 快速定位线程状态的主要内容,如果未能解决你的问题,请参考以下文章

jdk分析工具:jps和jstack

并发编程--锁--如何使用命令行和代码定位死锁

JVM性能监控与故障处理命令汇总(jpsjstatjinfojmapjhatjstack)

jstack排查锁竞争

使用jdk的jpsjstack工具检测代码问题,提高程序性能

jvm监控工具jps,jstat,jstack,jmap的使用方法