亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

打印GC日志排查問題怎么解決

發布時間:2021-12-21 10:26:45 來源:億速云 閱讀:234 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關打印GC日志排查問題怎么解決,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

在工作當中,有時候我們會需要打印GC的相關信息來定位問題。該如何做呢?

先來看個示例,

public static void main(String[] args) {
        List<Integer> list0 = new ArrayList<>();
        long start0 = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {
            list0.add(i);
        }
        System.out.println("cost: " + (System.currentTimeMillis() - start0));

        List<Integer> list1 = new ArrayList<>();
        long start1 = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {
            list1.add(i);
        }
        System.out.println("cost: " + (System.currentTimeMillis() - start1));
    }
 

直接運行,結果如下,

cost: 135
cost: 85
 

你應該覺得奇怪,同樣的往一個list插入100萬條數據,為啥第一個耗時比較久?

這種時候,有經驗的工程師應該能馬上懷疑是GC的問題,我們可以通過在運行時添加JVM參數來打印程序運行時的GC情況。

-XX:+PrintGCDetails
 

如果是使用IDEA來運行,可以在 run configurations 的 VM options添加上面的參數即可。

再次運行,輸出如下,

[GC (Allocation Failure) [PSYoungGen: 1536K->512K(1536K)] 1884K->1234K(262144K), 0.0009030 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 1302K->1017K(2560K)] 2025K->1948K(263168K), 0.0012290 secs] [Times: user=0.01 sys=0.01, real=0.01 secs] 
[GC (Allocation Failure) [PSYoungGen: 2553K->1504K(3072K)] 3484K->3051K(263680K), 0.0017210 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 3040K->2033K(4608K)] 4587K->4228K(265216K), 0.0023170 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 4593K->2560K(5120K)] 8195K->6681K(265728K), 0.0249700 secs] [Times: user=0.31 sys=0.00, real=0.03 secs] 
[GC (Allocation Failure) [PSYoungGen: 5120K->3584K(6656K)] 11352K->11408K(267264K), 0.0241680 secs] [Times: user=0.30 sys=0.01, real=0.03 secs] 
[GC (Allocation Failure) [PSYoungGen: 6656K->3296K(7680K)] 17645K->17909K(268288K), 0.0349010 secs] [Times: user=0.45 sys=0.00, real=0.03 secs] 
[GC (Allocation Failure) [PSYoungGen: 6368K->3328K(10240K)] 25729K->25825K(270848K), 0.0314260 secs] [Times: user=0.40 sys=0.00, real=0.03 secs] 
cost: 137
[GC (Allocation Failure) [PSYoungGen: 8166K->4469K(10240K)] 30663K->30103K(270848K), 0.0285370 secs] [Times: user=0.36 sys=0.01, real=0.03 secs] 
[GC (Allocation Failure) [PSYoungGen: 9166K->3785K(13312K)] 34800K->33427K(273920K), 0.0226780 secs] [Times: user=0.28 sys=0.01, real=0.02 secs] 
[GC (Allocation Failure) [PSYoungGen: 11465K->6142K(13824K)] 41107K->38511K(274432K), 0.0065540 secs] [Times: user=0.08 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 13822K->7837K(19456K)] 46191K->44246K(280064K), 0.0099720 secs] [Times: user=0.11 sys=0.01, real=0.01 secs] 
cost: 79
 

所以你大概明白了,第一次minor gc的次數比第二次多,所以運行時間比較長。

那么上面打印出來的日志,具體是什么意思呢?已經有人畫出了很詳細的圖,我借來用下,

打印GC日志排查問題怎么解決


 

 

打印GC日志排查問題怎么解決


    

了解GC日志的打印方法,并且能看懂GC日志,對于查找定位問題非常有幫助的。

我自己就遇到過生產上一個CPU飆到好幾百的情況,打印GC日志發現 JVM 一直在 fullGC,而且每次GC之后內存基本沒有變化,從而定位到應用程序可能存在內存泄漏的問題。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

gc
AI

达尔| 左权县| 伊宁市| 大丰市| 娄底市| 班戈县| 碌曲县| 茌平县| 抚州市| 平定县| 本溪| 南陵县| 日土县| 宜黄县| 泸西县| 安溪县| 太白县| 密山市| 湘乡市| 尼玛县| 永宁县| 克山县| 滕州市| 琼海市| 中方县| 遂溪县| 邹平县| 平湖市| 高邮市| 大连市| 芮城县| 牟定县| 九江县| 马边| 沂南县| 政和县| 盐山县| 仪陇县| 黄山市| 安宁市| 东宁县|