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

溫馨提示×

溫馨提示×

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

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

JVM中G1收集器有什么用

發布時間:2022-01-14 10:44:46 來源:億速云 閱讀:129 作者:小新 欄目:大數據

這篇文章主要介紹了JVM中G1收集器有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

首先看看G1收集器的內存模型

JVM中G1收集器有什么用

一、GI收集器雖然也是分代收集器,但是在內存結構上卻和其他的收集器大相徑庭,從這里就可以看出G1是物理上的分區,邏輯上的分代, G1不需要survivorTo做復制。

二、G1擁有Humongous區,是存放巨型對象的區域,巨型對象是當一個區被占到一半以上,也會出現一個區都裝不下,這時候就會需要連續的多個分區,尋找一個連續的內存區間是很困難的,如果內存不夠或許會造成Full GC。

首先談談CMS的缺點:

      1.由于并發進行,CMS在收集與應用線程會同時會增加對堆內存的占用,也就是說,CMS必須要在老年代堆內存用盡之前完成垃圾回收,否則CMS回收失敗時,將觸發擔保機制,串行老年代收集器將會以STW(Stop-the-world)的方式進行一次GC,從而造成較大停頓時間;

      而在G1中,設計原則是"首先收集盡可能多的垃圾(Garbage First)",G1會優先回收垃圾比例比較高得的區域,而不會等到內存用盡得時候,但是當G1收集器非常忙的時候,內存溢出,也會觸發擔保機制,就是使用serial old收集器進行一次Full GC。

      2.標記清除算法無法整理空間碎片,老年代空間會隨著應用時長被逐步耗盡,最后將不得不通過擔保機制對堆內存進行壓縮。CMS也提供了參數-XX:CMSFullGCsBeForeCompaction(默認0,即每次都進行內存整理)來指定多少次CMS收集之后,進行一次壓縮的Full GC。

      G1不會產生內存碎片,采用的是標志整理算法

再來看看G1的收集過程:

JVM中G1收集器有什么用

      初始標記:標記從根節點直接可達的對象。這個階段會伴隨一次新生代GC,它是會產生全局停頓的,應用程序在這個階段必須停止執行。

      根區域掃描:由于初始標記必然會伴隨一次新生代GC,所以在初始化標記后,eden被清空,并且存活對象被移到survivor區。在這個階段,將掃描由survivor區直接可達的老年代區域,并標記這些直接可達的對象。這個過程是可以和應用程序并發執行的。但是根區域掃描不能和新生代GC同時發生(因為根區域掃描依賴survivor區的對象,而新生代GC會修改這個區域),故如果恰巧此時需要新生代GC,GC就需要等待根區域掃描結束后才能進行,如果發生這種情況,這次新生代GC的時間就會延長。

      并發標記:和CMS類似,并發標記將會掃描并查找整個堆的存活對象,并做好標記。這是一個并發過程,并且這個過程可以被一次新生代GC打斷。

      重新標記:和CMS一樣,重新標記也是會使應用程序停頓,由于在并發標記過程中,應用程序依然運行,因此標記結果可能需要修正,所以在此階段對上一次標記進行補充。在G1中,這個過程使用SATB(Snapshot-At-The-Begining)算法完成,即G1會在標記之初為存活對象創建一個快照,這個快照有助于加速重新標記的速度。

      獨占清理:顧名思義,這個階段會引起停頓。它將計算各個區域的存活對象和GC回收比例并進行排序,識別可供混合回收的區域。在這個階段,還會更新記憶集。該階段給出了需要被混合回收的區域并進行了標記,在混合回收階段,需要這些信息。

      并發清理階段:識別并清理完全空閑的區域。它是并發的清理,不會引起停頓。

三色標記

提到并發標記,我們不得不了解并發標記的三色標記算法。它是描述追蹤式回收器的一種有用的方法,利用它可以推演回收器的正確性。

    首先,我們將對象分成三種類型的:

    黑色:跟對象或者該對象與它的子對象都被掃描(標記完成)。

    灰色:對象本身被標記完成,但是還沒有掃描完該對象中的子對象

    白色:未被掃描的對象。或者是掃描完成后,最終白色對象為不可達對象即為垃圾對象。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“JVM中G1收集器有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

jvm
AI

乌拉特后旗| 浪卡子县| 大宁县| 漯河市| 遵义县| 吴堡县| 东阿县| 嘉兴市| 武山县| 临颍县| 石渠县| 文安县| 平顶山市| 毕节市| 师宗县| 深泽县| 青州市| 上林县| 邛崃市| 岑溪市| 桐柏县| 长沙市| 灯塔市| 铜鼓县| 黑山县| 永平县| 株洲市| 白山市| 景宁| 临桂县| 上虞市| 收藏| 元阳县| 新密市| 长治县| 金川县| 万荣县| 岳阳县| 日土县| 丹东市| 龙海市|