jstack,为Java进程、核心文件、远程调试服务器打印Java线程栈跟踪。
命令行语法格式(SYNOPSIS)
jstack [ options ] pid jstack [ options ] executable core jstack [ options ] [ server-id@ ] remote-hostname-or-IP
options 命令行选项,查看Options章节。
pid 要打印的栈跟踪的进程ID。该进程必须是Java进程ID。使用jps(1)命令Java进程的列表。
executable 生成核心转储的Java可执行文件。
core 要打印栈跟踪的「核心文件」。
remote-hostname-or-IP 远程Debug Server的IP或者主机名。参阅jsadebugd(1)。
server-id 当同一个主机上运行了多个Debug Server的时候,可以使用server-id来指定。
命令简述(DESCRIPTION)
对于指定的Java进程、核心文件、远程调试服务器,jstack命令打印它们的Java线程的Java栈跟踪。对于每个Java帧,打印完整的类名、方法名称、字节码索引(BCI)、行号。 使用-m选项时,jstack命令使用程序计数器(PC)打印所有线程的Java和本机帧。对于每个本机帧,打印最接近PC的本机符号(如果可用)。C++被破坏的名称没有被清除。要清除C++名称,该命令的输出可以被管道传输到c++filt。当指定的进程在64位Java虚拟机上运行时,可能需要指定-J-d64选项,例如:jstack -J-d64 -m pid。
注意:jstack不受支持,在将来的JDK版本中可能会移除。在不存在dbgeng.dll文件的Windows系统中,必须安装适用于Windows的调试工具,以便这些工具起作用。PATH环境变量需要包含目标进程使用的jvm.dll的位置或生成崩溃转储文件的位置。例如:
set PATH=<jdk>\jre\bin\client;%PATH%
命令支持的选项及含义(OPTIONS)
-F 当jstack [-l] pid没有响应时,强制进行栈转储。
-l 长列表。打印有关锁的其他信息,例如属于java.util.concurrent可用同步器的列表。 参见AbstractOwnableSynchronizer类描述:http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
-m 打印混合模式的栈[……]