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实战定位死循环例子
这里以单独篇幅讲解这个例子。