中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

垃圾回收(4)G1的GC過程

發布時間:2020-06-15 10:55:42 來源:網絡 閱讀:522 作者:shayang88 欄目:編程語言

G1日志

G1有詳細的日志信息,建議使用下面的參數,當G1出問題,可以獲取很多有用的信息

1、-xx:+PrintGCDateStamps 打印日期和正常云行時間
2、-xx:+PrintGCDetails 打印G1詳細信息
3、-xx:+PrintAdaptiveSizePolicy 打印自適應調節策略;自適應策略:GC會根據中統計的GC時間、吞吐量、內存占用量,重新計算堆內存中各區大小
4、-xx:+PrintTenuringDistribution 打印survivor region區域內的對象的age信息

GC過程

1、年輕代GC

1、年輕代收集會,不會進行并發標記,所以它全程都是STW
2、應用線程不斷活動后,年輕代空間會被逐漸填滿。當JVM分配對象到Eden區域失敗(Eden區已滿)時,便會觸發一次STW式的年輕代收集

工作過程

1、根掃描 Root Scanning:靜態和本地對象等被掃描
2、更新已記憶集合 Update RSet:對dirty卡片的分區進行掃描,來更新RSet
3、RSet掃描:在收集當前CSet之前,掃描CSet分區的RSet,檢測old->young這種引用情況
4、轉移和回收-Object Copy:將CSet分區存活對象的轉移到新survivor或old Region,回收CSet內垃圾對象
5、引用處理:主要針對軟引用、弱引用、虛引用、final引用、JNI引用;當占用時間過多時,可選擇使用參數-XX:+ParallelRefProcEnabled激活多線程引用處理
6、在年輕代收集中,Eden分區存活的對象將被拷貝到Survivor分區;原有Survivor分區存活的對象,將根據對象的年齡而晉升到新的survivor分區和老年代分區。而原有的年輕代分區將被整體回收掉。

2、老年代GC

1、當堆內存占用空間超過整堆比IHOP閾值-XX:InitiatingHeapOccupancyPercent(默認45%)時,G1就會進行年老代收集

1.1、在年輕代收集之后或巨型對象分配之后,會去檢查這個空間占比
1.2、年輕代晉升老年代失敗會觸發老年代GC或者Full GC

2、年老代收集同時會執行年輕代收集,進行年老代的roots探測,既初始標記,STW的過程
3、并發標記
4、重新標記,STW的過程,這個過程使用STAB算法。
5、清除垃圾,STW的過程。

3、混合GC

1、在進行正常的年輕代垃圾收集,也會回收一部分老年代分區。會優先選取垃圾多(垃圾占用大于85%,復制算法存活對象越少效率越高)的Regions,一共1/8的年老代Regions加入Cset中
2、假設一個Region的存活對象達到95%,而進行復制,效率很低,所以G1允許浪費部分內存,那么這個Region不會被混合收集,-XX:G1HeapWastePercent:默認5%
3、stw,然后將Cset中的Regions進行收集,使用復制算法
4、下一次年輕代垃圾收集進行時,在將第二個1/8的年老代Regions加入Cset中進行收集
當年老代內單個Region的垃圾小于等于G1HeapWastePercent時,復制大量存活對象,效率很低。此時G1會確定結束混合收集周期。所以混合收集次數可能小于8次。

4、Full GC

STW式的、單線程的Full GC。Full GC會對整堆做標記清除和壓縮,最后將只包含純粹的存活對象。

總結

具體執行過程中的細節,后面梳理之后再補充~~~~

向AI問一下細節

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

g1
AI

犍为县| 栾川县| 常宁市| 米林县| 巢湖市| 峡江县| 临漳县| 苍南县| 奉贤区| 通河县| 吴忠市| 将乐县| 麻江县| 咸阳市| 奇台县| 绍兴县| 德州市| 新津县| 龙门县| 那曲县| 普定县| 凤翔县| 广元市| 大冶市| 东山县| 三明市| 彩票| 马龙县| 夏邑县| 鄱阳县| 三台县| 新干县| 东兰县| 抚州市| 海晏县| 平度市| 临城县| 周口市| 宝坻区| 平乐县| 平原县|