jstack命令可以查看或dump出虚拟机栈和本地方法栈的jvm调优工具,可以查看Java虚拟机中每个线程的运行情况。

通过dump文件可以看到线程长时停顿的原因。用于解决线程间死锁、死循环、请求外部资源被长时间挂起等。

jstack命令格式

jstack [option] pid
option参数
  • -F :  当正常输出请求不被响应时,强制输出线程堆栈
  • -l :   除堆栈外,显示关于锁的附加信息
  • -m : 如果调用到本地方法的话,可以显示C/C++的堆栈

例如

jstack -l 25282 > /data/jstack_25282.txt

其中25282是进程号,使用jps -l命令查出我们想看到的进程的进程id号。

/data/jstack_25282.txt是dump出的文件路径。

jstack实战定位死循环例子

这里以单独篇幅讲解这个例子。

JVM调优之cpu占用过高例子