Java記憶體回收演算法

來源:互聯網
上載者:User

標籤:缺點   順序分配   優點   區別   不能   付出   移動   建立   複製演算法   

1.標記-清除演算法

概念

標記階段:先通過根節點,標記所有從根節點開始的可達對象,因此,未被標記的對象就是未被引用的垃圾對象;

清除階段:清除所有未被標記的對象。

缺點:

標記和清除的過程效率不高(標記和清除都需要從頭便利到尾)

標記清除後會產生大量不連續的片段。

2.複製演算法

概念:

將原有的記憶體空間氛圍兩塊,每次只是用其中一塊,在記憶體回收時,將正在使用放記憶體中的存活的對象複製到位使用的記憶體塊中,飯後清除正在使用放記憶體塊中放所有對象。

優點:

這樣使得每次都是對整個搬去與進行回收,記憶體配置時也就不用考慮記憶體片段等情況,只要移動堆頂指標按順序分配記憶體即可,實現簡單,運行效率高。

缺點:空間的浪費

從以上描述不難看出,複製演算法要想使用,最起碼對象的存活率要非常低才行。

現在的商業虛擬機器都採用這種手機演算法來回收新生代,新生代的對象98%都是朝生夕死的,所以並不需要按照1:1的比例來劃分記憶體空間,而是將記憶體分為一塊比較大的Eden空間和兩塊比較小的Survivor空間,每次使用Eden和其中一塊Survivor。當回收時,將Eden和Survivor中還存活的對象一次性的複製到另外一個Survivor空間上,最後清理掉Eden和剛才用過的Survivor空間。HotSpot虛擬機器預設Eden和Survivor的大小比例是8:1,也就是所,每次新生代中可使用記憶體空間為整個新生代容量的90%,只有10&的空間會被浪費。

當然,98%的對象可回收只是一般情境下的資料,我們沒有辦法保證每次回收都只有不多於10%的對象存活,當Survivor空間不夠用時,需要依賴於老年代進行分配擔保,所以大對象直接進入老年代,整個過程如所示。

標記-整理演算法(老年代的GC)

複製演算法在對象存活率高的時候要進行較多的複製操作,效率將會減低,所以在老年代中一般不能直接使用這種演算法。

概念:

標記階段:

先通過根節點,標記所有從根節點開始的可達對象,因此,未被標記的對象就是未被引用的垃圾對象。

整理階段:將所有的存活對象壓縮到記憶體的一端;之後,清理邊界外所有的空間。

優點:

不會產生記憶體片段。

缺點:

在標記的基礎之上還需要進行對象的移動,成本相對較高,效率也不高。

他們的區別(>表示前者要優於後者,=表示兩者效果一樣)

(1)效率:複製演算法》標記-整理演算法》標記清除演算法(此處的效率只是簡單地對比時間複雜度,實際情況不一定如此)

(2)記憶體整齊度:複製演算法=標記-整理演算法》標記清除演算法

(3)記憶體利用率:標記-整理演算法=標記-清除演算法》複製演算法

注意1標記整理演算法不僅可以彌補標記-清除演算法當中記憶體地區分散的缺點,也消除了複製演算法當中,記憶體減半的高額代價。

注意2:可以看到標記-清除演算法是比較落後的演算法了,但是後兩種演算法卻是在此基礎上建立是。

注意3:時間與空間不可兼得。

4.分代收集演算法

當前商業虛擬機器的GC都是採用的分代收集演算法,這並不是什麼新的思想,只是根據對象放存活周期的不用記憶體劃分為幾塊,一般是吧Java堆分為新生代和老年代:短命對象歸為新生代,長命對象歸為老年代。

存活率低:少量對象存活,適合膚質演算法:在新生代中,每次GC時都發現有大批對象死去,只有少量存活(新生代中98%的對象都是朝生夕死的),那就選用複製演算法,只需要付出少量存活對象的複製成本就可以完成GC。

存活率高:大量對象存活,適合用標記-清理、標記-整理;在老年代中,因為對象存活率高,沒有額外的空間對他進行分配擔保,就必須使用“標記-清理”或者“標記-整理”演算法進行GC。

注意:老年代的對象中,有一小部分因為在新生代會收拾,老年代做擔保,進來的對象;絕大部分對象是因為很多次GC都沒有被回收掉而進入老年代。

Java記憶體回收演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.