jstack定義:
創(chuàng)新互聯(lián)專注于芮城網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供芮城營銷型網(wǎng)站建設,芮城網(wǎng)站制作、芮城網(wǎng)頁設計、芮城網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務,打造芮城網(wǎng)絡公司原創(chuàng)品牌,更為您提供芮城網(wǎng)站排名全網(wǎng)營銷落地服務。jstack是Java虛擬機自帶的一種堆棧跟蹤工具。
基本介紹:
jstack用于生成java虛擬機當前時刻的線程快照。線程快照是當前java虛擬機內(nèi)每一條線程正在執(zhí)行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現(xiàn)長時間停頓的原因,如線程間死鎖、死循環(huán)、請求外部資源導致的長時間等待等。
線程出現(xiàn)停頓的時候通過jstack來查看各個線程的調(diào)用堆棧,就可以知道沒有響應的線程到底在后臺做什么事情,或者等待什么資源。
命令格式:
jstack [ option ] pid
基本參數(shù):
-F 當'jstack [-l] pid'沒有相應的時候強制打印棧信息
-l 長列表. 打印關于鎖的附加信息,例如屬于java.util.concurrent的ownable synchronizers列表.
-m 打印java和native c/c++框架的所有棧信息. -h | -help打印幫助信息
pid 需要被打印配置信息的java進程id,可以用jps工具查詢
案例
C:\Users\Administrator>jstack 5516 Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode): "DestroyJavaVM" prio=6 tid=0x000000000027d800 nid=0x1bb0 waiting on condition [0 x0000000000000000] java.lang.Thread.State: RUNNABLE "Thread-1" prio=6 tid=0x000000000cb13800 nid=0x19ac waiting for monitor entry [0 x000000000d67f000] java.lang.Thread.State: BLOCKED (on object monitor) at thread.DeadLockDemo$2.run(DeadLockDemo.java:35) - waiting to lock <0x00000007d5a9be88> (a java.lang.String) - locked <0x00000007d5a9beb8> (a java.lang.String) at java.lang.Thread.run(Unknown Source) "Thread-0" prio=6 tid=0x000000000cb0e800 nid=0x6bc waiting for monitor entry [0x 000000000d48f000] java.lang.Thread.State: BLOCKED (on object monitor) at thread.DeadLockDemo$1.run(DeadLockDemo.java:21) - waiting to lock <0x00000007d5a9beb8> (a java.lang.String) - locked <0x00000007d5a9be88> (a java.lang.String) at java.lang.Thread.run(Unknown Source)