日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM的监控工具之jstack

發布時間:2023/12/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM的监控工具之jstack 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考博客:https://www.jianshu.com/p/213710fb9e40

jstack(Stack Trace for Java)命令用于生成虛擬機當前時刻的線程快照(一般稱為threaddump或者javacore文件)。線程快照就是當前虛擬機內每一條線程正在執行的方法堆棧 的集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,

如線程間死鎖、死循環、請求外部資源導致的長時間等待等都是導致線程長時間停頓的常見原因。
線程出現停頓的時候通過jstack來查看各個線程的調用堆棧,就可以知道沒有響應的線程到底在后臺做些什么事情,或者等待著什么資源

首先jps -l 查看java進程:

接著再用jstack 21028 查看線程狀態

發現診斷到了死鎖:

?

死鎖演示代碼如下

public class DeadLockTest {/***線程死鎖等待演示*/static class SynAddRunalbe implements Runnable{int a,b;public SynAddRunalbe(int a,int b){this.a=a;this.b=b;}@Overridepublic void run(){synchronized(Integer.valueOf(a)){synchronized(Integer.valueOf(b)){System.out.println(a+b);}}}}public static void main(String[]args){for(int i=0;i<100;i++){new Thread(new SynAddRunalbe(1,2)).start();new Thread(new SynAddRunalbe(2,1)).start();}} }

  

?

轉載于:https://www.cnblogs.com/cheng21553516/p/11235432.html

總結

以上是生活随笔為你收集整理的JVM的监控工具之jstack的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。