打印Java线程栈信息。
概要
jstack [options] pid
jstack [options] executable core
jstack [options] [server-id@] remote-hostname-or-IP
options 命令行选项。
pid Java进程Id。
executable 产生core dump的java可执行指令
core 栈信息打印核心文件
remote-hostname-or-IP 远程服务器主机名或IP地址。
server-id 多个调试服务器在同一个远程主机上运行时使用的可选唯一标识。
描述
jstack用于生成java虚拟机当前时刻的线程快照。只要可达,就会打印Java frame,类全名,方法名,字节码索引(BCI)以及行号。使用-m*选项,jstack命令用程序计数器打印所有线程的Java和本机帧。对于本地帧会打印可达的最靠近PC的native symbol。c++打乱的名称不会被恢复。为了恢复C++名称,可以通过改命令输出到管道c++filt。在64位JVM上,可能需要使用-J-d64*选项。
从上面描述可以看出,jstack命令主要用来查看Java线程的调用栈,以分析线程问题(如死锁,高cpu等)。
选项
-F 当jstack [-l]pid无响应时使用。强制dump。一般情况不需要使用。
-l 长列表。打印关于锁的列表信息。会使得JVM STW时间变长,一般不使用。
-m 打印Java和本地C/C++栈帧。一般不使用。已知bug: -m选项不能在远程模式下生效。
-h|-help 打印帮助信息。