jdk自带的jstack命令可以查看当前或者JVM中运行的Java进程ID的线程的运行情况和堆栈跟踪,并且可以将当前线程情况输入到文本。使用 jstack -help 命令可以查看jstack的具体用法,如下所示:
Usage:
jstack [-l] <pid>
(to connect to running process)
jstack -F [-m] [-l] <pid>
(to connect to a hung process)
jstack [-m] [-l] <executable> <core>
(to connect to a core file)
jstack [-m] [-l] [server_id@]<remote server IP or hostname>
(to connect to a remote debug server)
Options:
-F to force a thread dump. Use when jstack <pid> does not respond (process is hung)
-m to print both java and native frames (mixed mode)
-l long listing. Prints additional information about locks
-h or -help to print this help message
通过jstack -help命令可以看到jstack有如下用法:jstack [ options ] pid,jstack [ options ] executable core和jstack [ options ] [ server-id@ ] remote-hostname-or-IP。其中options有-F,-m,-l,-h或者-help。pid为要打印的堆栈的Java进程ID,executable为生成核心转储的Java可执行文件,core为要打印堆栈跟踪的核心文件,[ server-id@ ] remote-hostname-or-IP为要远程调试的hostname或者ip地址。下面是options参数的具体介绍:
-h,-help 打印jstack用法的信息
-m 打印Java和本地C/C ++的混合模式堆栈跟踪。
-l 打印有关锁的其他信息,例如拥有的java.util.concurrent ownable同步器的列表。
-F 当jstack [-l] pid 没有响应时,强制堆栈转储。
上面的命令是将进程信息输出到屏幕,除此之外,还可以将堆栈信息输出到文件里,命令为:
jstack [options] > pid.txt
关于更多jstack的用法可以参考官方文档jstack