《深入理解Java虛擬機器》筆記02 -- 垃圾收集演算法

來源:互聯網
上載者:User

標籤:連續   移動   vivo   思路   其他   深入理解java   記憶體   png   java虛擬機器   

1. 標記 - 清除演算法

    先標記出所有需要回收的對象,在標記完成後統一回收所有被標記的對象。它是最基礎的收集演算法。其他收集演算法都是根據其思路,改進其不足之處。

    缺點:1) 標記和清除兩個階段的效率都不高;2)清除後會產一大量不連續的記憶體片段

2. 複製演算法

    將可用記憶體劃分為大小相等的兩塊,每次只使用其中一塊。當一塊記憶體用完了,將還存活的對象複製到另一塊,然後將使用過的那塊全部清空。

    缺點:可使用記憶體僅為分配的一半,代價太高。

    這種演算法主要用在新生代。新生代中大多數對象都是朝生夕死的,所以並不需要1:1來劃分,而是分為一塊較大的Eden區和兩塊較小的Survivor區,每次使用Eden和其中一塊Survivor。當回收時,將Eden和Survivor中還存活著的對象一次性地複製到另外一塊Survivor區,最後清理掉Eden和剛才用過的Survivor空間。HotSpot虛擬機器預設的Eden和Survivor的大小比例是8:1。

3. 標記 - 整理演算法

    標記過程與“標記 - 清除”演算法一樣,但後續步驟不是直接對可回收對象進行清理,而是讓所有存活的對象都向一端移動,然後直接清理掉端邊界以外的記憶體。

4. 分代收集演算法

    按照對象存活周期的不同,一般把Java堆分為新生代和老年代。新生代採用複製演算法,老年代採用“標記 - 清理”或“標記 - 整理”演算法。

《深入理解Java虛擬機器》筆記02 -- 垃圾收集演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.