jstack命令非常简单。我们可以通过jstack-h或者jstack-help命令查看它的使用细节。今天,本文重点介绍JStack命令在Java中的使用。有兴趣的朋友来看看吧。
目录
jstack命令介绍jstack命令参数-F参数-l参数-m参数-h和-帮助结束
jstack命令简介
jstack(Java Virtual Machine stack trace)是JDK提供的命令行工具,可以生成Java虚拟机当前时刻的线程快照信息。一个线程一般被称为threaddump或javacore file,它是Java线程、虚拟机内部线程以及每个线程在当前Java虚拟机中执行的可选本地方法堆栈帧的集合。对于每个方法堆栈框架,将显示完整的类名、方法名、字节码索引(BCI)和行号。生成的线程快照可用于定位长期线程停滞的原因,如线程间死锁、无限循环、请求外部资源长时间挂起等。
jstack命令参数
命令语法:
jstack[选项] pid
命令参数描述:
option:jstack命令的可选参数。如果不指定该参数,jstack命令将显示当前时刻Java虚拟机的线程快照信息,如下图所示:
Pid:打印配置信息的Java虚拟机的进程id。
要获得正在运行的Java虚拟机进程的列表,可以使用ps命令(在Linux系统中)或tasklist命令(在Windows系统中)。如果Java虚拟机进程没有在单独的docker实例中运行,您可以使用jps命令。
option的参数是什么?让我们看一看。
-F参数
如果Java虚拟机进程由于暂停而没有响应,则可以使用-F参数(仅在Oracle Solaris和Linux操作系统上)强制显示线程快照信息。
例如:
-l参数
如果使用了-l参数,除了方法堆栈框架之外,jstack命令还将显示关于锁的附加信息,例如属于java.util.concurrent的ownablesynchronizers的列表
例如:
-m参数
如果使用-m参数,jstack命令将显示混合的堆栈帧信息,包括Java方法堆栈帧和本地方法堆栈帧。本地方法堆栈框架是C或C写的虚拟机代码或JNI/本机代码
例如:
在显示结果中,带星号前缀的框架是Java方法堆栈框架,不带星号前缀的框架是本地方法堆栈框架。例如:
-h 和 -help
显示jstack命令的帮助信息。
结尾
虽然jstack命令已经推出很久了,使用也很频繁,但它仍然是一个实验性的、不受支持的工具,将来可能会变成正式成员,也可能会在JDK版本中无声无息地消失。所以,用它,珍惜它。
但是我们也可以使用Thread.getAllStackTracesgetAll()方法获取Java虚拟机中所有线程的StackTraceElement对象,进而获取所有线程的堆栈帧信息。
以上就是本文关于Java的jstack命令使用示例的详细解释。有关Java的jstack命令用法的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。