jstack的作用是將正在執行的jvm的線程情況進行快照,並且打印出來。
jstack用於生成java虛擬機當前時刻的線程快照。線程快照是當前java虛擬機內每一條線程正在執行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導致的長時間等待等。線程出現停頓的時候透過jstack來檢視各個線程的調用堆棧,就可以知道沒有響應的線程到底在後臺做什麼事情,或者等待什麼資源。不同的 JAVA虛機的線程 DUMP的創建方法和檔案格式是不一樣的,不同的 JVM版本, dump資訊也有差別。在實際執行中,往往一次 dump的資訊,還不足以確認問題。建議產生三次 dump資訊,如果每次 dump都指向同一個問題,我們才確定問題的典型性。