使用jstack

 

介绍:

  1. jstack命令用于打印指定Java进程、核心文件或远程调试服务器的Java线程的Java堆栈跟踪信息。
  2. jstack命令可以生成JVM当前时刻的线程快照。线程快照是当前JVM内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。
  3. 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
  4. 当指定的进程在64位Java虚拟机上运行时,可能需要指定-J-d64选项,例如:jstack -J-d64 -m pid。
  5. 该命令可能在未来的版本中不可用!!!

 

jstack [ options ] pid
pid:Java进程的ID,可以通过jps命令查询到。

options 参数说明
-F     当 jstack [-l] pid 没有响应时,强制打印一个堆栈转储。

-l      打印关于锁的其他信息,比如拥有的java.util.concurrent ownable同步器的列表。

-m    打印包含Java和本机C/ C++帧的混合模式堆栈跟踪。

-h     打印帮助信息

-help 打印帮助信息

 

一般使用  jstack pid 查看错误信息,如:

java 卡死 java程序卡死 问题查找_Java