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