狠狠色丁香婷婷久久综合麻豆,国产99久久久久久免费看,与亲女洗澡时伦了视频,一面膜胸口一面膜下免费

JAVA中GC日志的相關知識有哪些

這篇文章主要為大家展示了“JAVA中GC日志的相關知識有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“JAVA中GC日志的相關知識有哪些”這篇文章吧。

創新互聯是一家集網站建設,商州企業網站建設,商州品牌網站建設,網站定制,商州網站建設報價,網絡營銷,網絡優化,商州網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

GC環境模擬

首先我們給出如下代碼用來觸發GC

public static void main(String[] args) {
// 每100毫秒創建100線程,每個線程創建一個1M的對象,即每100ms申請100M堆空間
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(() -> {
for (int i = 0; i < 100; i++) {
new Thread(() -> {
try {
// 申請1M
byte[] temp = new byte[1024 * 1024];
Thread.sleep(new Random().nextInt(1000)); // 隨機睡眠1秒以內
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
}, 1000, 100, TimeUnit.MILLISECONDS);
}

我們要模擬的場景是年輕代不斷地Young GC,并有一部分對象晉升到老年代,當老年代空間不足時觸發Full GC。

程序邏輯:每100毫秒鐘創建100個線程,每個線程創建一個1M的對象,即每100ms申請100M堆空間。之所以每個線程隨機睡眠1s,是為了避免對象朝生夕滅,保證可以有一部分對象能晉升到老年代,更好的觸發Young GC 和 Full GC,注意這個睡眠時間如果大了,會導致OOM,如果小了,很難觸發FULL GC。

虛擬機參數解釋

啟動Java進程:java -Xms200m -Xmx200m -Xmn100m -verbose:gc -XX:+PrintGCDetails -Xloggc:./gc.log -XX:+PrintGCDateStamps -jar demo-0.0.1-SNAPSHOT.jar

-Xms200m -Xmx200m 最小/最大堆內存 200M

-Xmn100m 年輕代內存 100M

-verbose:gc 開啟GC日志

-XX:+PrintGCDetails -Xloggc:./gc.log -XX:+PrintGCDateStamps 將GC日志詳情輸入到gc.log中

jmap分析

jcmd 獲取我們Java進程的Id:6264

jmap -heap 6264查看堆信息

第一次查看,我們發現 Eden區是98M,S0、S1是1M

JAVA中GC日志的相關知識有哪些

第二次查看, Eden區是99M,S0、S1是0.5M

JAVA中GC日志的相關知識有哪些

Eden區與Survivor區的比例在動態的變化,并不是默認的8:1:1。

原來我們使用默認的垃圾收集器Parallel Scavenge+Parallel Old組合,而該收集器下-XX:+UseAdaptiveSizePolicy是默認開啟的,即Eden區與Survivor區比例根據GC情況會自適應變化。

我們加上參數,關閉年輕代自適應,年輕代比例設置為8:1:1

-XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=8

另外為了盡早的觸發FULL GC,我們新增虛擬機參數

-XX:MaxTenuringThreshold=10

晉升年齡由默認的15修改為10,使得年輕代的對象更容易晉升到老年代

重啟虛擬機查看jmap

JAVA中GC日志的相關知識有哪些

年輕代

  • Eden區80M 已使用51M,當前使用率63.8%

  • S0區10M 已使用0.43M,使用率4.37%

  • S1區10M 使用率為空

老年代

  • 100M 已使用18.39M,使用率18.9%

GC日志內容分析

查看我們輸出的GC日志gc.log,選取其中兩段

2019-06-09T02:55:30.993+0800: 330.811: [GC (Allocation Failure) [PSYoungGen: 82004K->384K(92160K)] 184303K->102715K(194560K), 0.0035647 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2019-06-09T02:55:30.997+0800: 330.815: [Full GC (Ergonomics) [PSYoungGen: 384K->0K(92160K)] [ParOldGen: 102331K->5368K(102400K)] 102715K->5368K(194560K), [Metaspace: 16941K->16914K(1064960K)], 0.0213953 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]

Young GC

2019-06-09T02:55:30.993+0800: 330.811: [GC (Allocation Failure) [PSYoungGen: 82004K->384K(92160K)] 184303K->102715K(194560K), 0.0035647 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2019-06-09T02:55:30.997+0800: 330.815: [Full GC (Ergonomics) [PSYoungGen: 384K->0K(92160K)] [ParOldGen: 102331K->5368K(102400K)] 102715K->5368K(194560K), [Metaspace: 16941K->16914K(1064960K)], 0.0213953 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]

解釋:

  • 年輕代GC:[GC前年輕代80.08M->GC后0.37M(年輕代總大小90M)]GC前堆179.98M->GC后堆100.3M(堆總大小190M),用時]

  • 其中年輕代總大小是90M而不是100M,這里我理解是年輕代當前最大申請到90M

  • 100M*80%=80M 是Eden區大小

  • 80M*80% = 64M Eden區默認占用超過8成即64M就會觸發YoungGC

Full GC

[Full GC (Ergonomics) [PSYoungGen: 384K->0K(92160K)] [ParOldGen: 102331K->5368K(102400K)] 102715K->5368K(194560K), [Metaspace: 16941K->16914K(1064960K)], 0.0213953 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]

解釋:

  • [GC前年輕代0.375M->GC后年輕代0M(年輕代總大小90M)][GC前老年代99.93M->GC后老年代5.24M(老年代總大小100M)]GC前堆100.3M->GC后堆5.24M(堆總大小190M),[元數據區:GC前16.5,GC后16.5(元數據區總大小1040M)],用時]

  • 可以推測出此次FullGC原因是年輕代晉升老年代空間不足導致

利用可視化工具分析

這里我們利用 gceasy.io/ 分析一下

(1)統計年輕代、老年代、元數據區最大可用空間以及峰值,這里元數據區大小在我們的虛擬機參數沒有配置,所以取的是默認值

JAVA中GC日志的相關知識有哪些

(2)吞吐量、GC平均延遲、最大延遲以及延遲區間的統計

JAVA中GC日志的相關知識有哪些

(3)堆所用大小的實時分析,紅色位置是發生了FullGC使得堆總量直線下降

JAVA中GC日志的相關知識有哪些

會發現虛擬機在剛啟動不久的階段觸發大量的FULL GC,我的理解是我們申請的對象都隨機睡眠一秒以內,剛啟動時大部分還存在線程的引用,GCRoot可達。在剛啟動的時候觸發FULL GC并不會完整清理掉老年代空間并由于空間不足不斷觸發FULL GC。

(4)GC空間總量和時間的統計

JAVA中GC日志的相關知識有哪些

(5)各類GC時間、GC次數、GC總量等指標

JAVA中GC日志的相關知識有哪些

以上是“JAVA中GC日志的相關知識有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!

網站名稱:JAVA中GC日志的相關知識有哪些
分享路徑:http://www.hntjjpw.com/article46/pgddhg.html

成都網站建設公司_創新互聯,為您提供營銷型網站建設域名注冊網站內鏈定制網站建站公司網站排名

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化
主站蜘蛛池模板: 得荣县| 策勒县| 罗甸县| 太湖县| 深圳市| 三门县| 广州市| 云浮市| 会同县| 丰都县| 泸州市| 绵竹市| 烟台市| 天台县| 曲沃县| 榆社县| 海兴县| 和硕县| 舟曲县| 庄浪县| 丹寨县| 庐江县| 曲沃县| 白玉县| 新泰市| 连云港市| 额济纳旗| 台湾省| 常州市| 枣强县| 吴堡县| 惠州市| 隆回县| 肇东市| 明星| 仪陇县| 炉霍县| 胶南市| 海宁市| 中西区| 鲁甸县|