<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                #### Jstack命令 jstack是java虛擬機自帶的一種堆棧跟蹤工具。用于打印出給定的java進程ID或core file或遠程調試服務的java堆棧信息。 可以用來生成java虛擬機當前時刻的線程快照。 生成快照的主要目的是定位線程出現長時間停頓的原因,如*死鎖、死循環、請求外部資源超時等待*等。 線程出現停頓的時候通過jstack來查看哥哥線程的調用堆棧,就可以直到沒有響應的線程到底在后臺做什么事情,或者等待什么資源。 ***** 例子: **示例代碼** ``` public class DeadLock implements Runnable { private int flag; private static final Object a = new Object(); private static final Object b = new Object(); public DeadLock(int flag) { this.flag = flag; } @Override public void run() { if (flag == 1) { synchronized (a) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("當前線程:"+Thread.currentThread().getName()+"嘗試獲取b"); synchronized (b) { System.out.println("當前線程:"+Thread.currentThread().getName()+"獲得了b"); } } } else { synchronized (b) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("當前線程:"+Thread.currentThread().getName()+"嘗試獲取a"); synchronized (a) { System.out.println("當前線程:"+Thread.currentThread().getName()+"等待獲得a"); } } } } } ``` ***** ``` public class DeadLockLauncher { public static void main(String[] args) { final DeadLock deadLock1 = new DeadLock(1); final DeadLock deadLock2 = new DeadLock(0); Thread t1 = new Thread(deadLock1, "線程1"); Thread t2 = new Thread(deadLock2, "線程2"); t1.start(); t2.start(); } } ``` ***** * 打開命令行窗口,輸入 jps ``` C:\Users\heyfan.xie>jps 16592 Jps 17232 DeadLockLauncher 7872 17092 Launcher 14040 Launcher ``` * 死鎖啟動類ID為 17232, 輸入 jstack -F 17232 ``` C:\Users\heyfan.xie>jstack -F 17232 Attaching to process ID 17232, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.92-b14 Deadlock Detection: Found one Java-level deadlock: ============================= "線程2": waiting to lock Monitor@0x000000001f1e0288 (Object@0x000000076ba3f420, a java/lang/Object), which is held by "線程1" "線程1": waiting to lock Monitor@0x000000001f1e1728 (Object@0x000000076ba3f430, a java/lang/Object), which is held by "線程2" Found a total of 1 deadlock. Thread 3: (state = BLOCKED) Thread 22: (state = BLOCKED) - cn.cici.frigate.logistics.dead.DeadLock.run() @bci=120, line=41 (Interpreted frame) - java.lang.Thread.run() @bci=11, line=745 (Interpreted frame) Thread 21: (state = BLOCKED) - cn.cici.frigate.logistics.dead.DeadLock.run() @bci=34, line=30 (Interpreted frame) - java.lang.Thread.run() @bci=11, line=745 (Interpreted frame) Thread 15: (state = IN_NATIVE) - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Interpreted frame) - java.net.SocketInputStream.socketRead(java.io.FileDescriptor, byte[], int, int, int) @bci=8, line=116 (Interpreted frame) // 省略更多的信息 ``` * 可以看到* Found a total of 1 deadlock* 競爭鎖定的對象為 java/lang/Object
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看