jstack使用方法,linux jstack命令详解

  jstack使用方法,linux jstack命令详解

  00-1010 jstack命令介绍jstack命令参数-F参数-l参数-m参数-h和-帮助结束

  00-1010JStack (Java虚拟机堆栈跟踪)是JDK提供的命令行工具,可以生成Java虚拟机当前时刻的线程快照信息。一个线程一般被称为threaddump或javacore file,它是Java线程、虚拟机内部线程以及每个线程在当前Java虚拟机中执行的可选本地方法堆栈帧的集合。对于每个方法堆栈框架,将显示完整的类名、方法名、字节码索引(BCI)和行号。生成的线程快照可用于定位长期线程停滞的原因,如线程间死锁、无限循环、请求外部资源长时间挂起等。

  00-1010命令语法:

  jstack [options] pid命令的参数描述:

  option:jstack命令的可选参数。如果不指定该参数,jstack命令将显示当前时刻Java虚拟机的线程快照信息,如下图所示:

  Pid:打印配置信息的Java虚拟机的进程id。

  要获得正在运行的Java虚拟机进程的列表,可以使用ps命令(在Linux系统中)或tasklist命令(在Windows系统中)。如果Java虚拟机进程没有在单独的docker实例中运行,您可以使用jps命令。

  option的参数是什么?让我们看一看。

  00-1010如果Java虚拟机进程因为进程挂起而没有响应,可以使用-F参数(仅限Oracle Solaris和Linux操作系统上的游戏)强制显示线程快照信息。

  例如:

  00-1010如果使用-l参数,除了方法堆栈框架之外,jstack命令还将显示关于锁的附加信息,例如属于java.util.concurrent的ownablesynchronizers的列表

  例如:

  00-1010如果使用-m参数,jstack命令将显示混合堆栈帧信息,包括Java方法堆栈帧和本地方法堆栈帧。本地方法堆栈框架是C或C写的虚拟机代码或JNI/本机代码

  例如:

  在显示结果中,带星号前缀的框架是Java方法堆栈框架,不带星号前缀的框架是本地方法堆栈框架。例如:

  00-1010显示jstack命令的帮助信息。

  00-1010虽然jstack命令已经推出很久了,使用也很频繁,但它仍然是一个实验性的、不受支持的工具,将来可能会变成正式成员,也可能会在一个JDK版本中无声无息地消失。所以,用它,珍惜它。

  但是我们也可以使用Thread.getAllStackTracesgetAll()方法获取Java虚拟机中所有线程的StackTraceElement对象,进而获取所有线程的堆栈帧信息。

  以上就是本文关于Java的jstack命令使用示例的详细解释。有关Java的jstack命令用法的更多信息,请搜索以前关于流行它的文章或继续浏览下面的相关文章。我希望你能在未来更多地支持它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: