jstack: stack trace for java
用途:用于生成虚拟机当前时刻的线程快照
(何为线程快照?就是指当前虚拟机中每一条线程正在执行的方法堆栈的集合)
(为何要生成线程快照?为了定位线程出现长时间停顿的原因。)
什么可以导致线程出现长时间的停顿?
1)线程间死锁
2)死循环
3)请求外部资源导致长时间的等待
应用场景:
线程出现了长时间的停顿,就可以使用jstack来查看各个线程的调用堆栈。也就可以从中知道没有相应的线程在后台到底在干啥!
命令格式:
jstack [option] vmid
-F 强制输出
-l 附加输出锁的附加信息
-m 调用本地方法时,显示C/C++堆栈