java命令-jstack

來源:互聯網
上載者:User

標籤:rmi   AC   堆棧   產生   lock   wait   nbsp   分享圖片   []   

 

jstack用於生產java虛擬機器當前時刻的線程快照。線程快照是當前java虛擬機器內每一條線程正在執行的方法

堆棧的集合,產生線程快照的主要目的是定位線程出現長時間停頓的原因,比如線程間死結、死迴圈、請求

外部資源導致長時間等待等。線程出現停頓的時候通過jstack命令可查看各個線程的呼叫堆疊

 

線程狀態

new 未啟動

runnable 在虛擬機器內執行

blocked 阻塞並等待監視器鎖

waiting 無限等待另一個線程執行特定操作

timed_waiting 有時限地等待另一個線程的特定操作

terminated 已退出

 

jstack使用簡單樣本(死結情況類比)

 1 public class DeadLock { 2  3     public static void main(String[] args) { 4         //擷取當前線程pid 5         System.out.println(ManagementFactory.getRuntimeMXBean().getName()); 6         Thread t1 = new Thread(new DeadLockClass(true)); 7         Thread t2 = new Thread(new DeadLockClass(false)); 8         t1.start(); 9         t2.start();10     }11 }12 13 14 class DeadLockClass implements Runnable {15     public boolean flag;16 17     public DeadLockClass(boolean flag) {18         this.flag = flag;19     }20 21     @Override22     public void run() {23         if(flag) {24             while(true) {25                 synchronized (SuoObject.obj_1) {26                     System.out.println("obj_1" + Thread.currentThread().getName());27                     synchronized (SuoObject.obj_2) {28                         System.out.println("obj_2" + Thread.currentThread().getName());29                     }30                 }31             }32         }else {33             while(true) {34                 synchronized (SuoObject.obj_2) {35                     System.out.println("obj_2" + Thread.currentThread().getName());36                     synchronized (SuoObject.obj_1) {37                         System.out.println("obj_1" + Thread.currentThread().getName());38                     }39                 }40             }41         }42     }43 }44 45 class SuoObject {46     static Object obj_1 = new Object();47     static Object obj_2 = new Object();48 }

根據列印出的線程pid, 使用jstack pid命令,即可出現如下如所示結果,死結的資訊一目瞭然!!!

 

java命令-jstack

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.