java記憶體回收機制

來源:互聯網
上載者:User

標籤:方法   比較   效率   建立   存在   root   需要   優點   java   

1 、記憶體回收機制(GC)
記憶體回收就是回收記憶體中不再使用對象;
(1)記憶體回收的步驟:
1)尋找記憶體中不再使用的對象;
2)釋放這些對象所佔用的記憶體;
(2)尋找記憶體中不再使用的對象方法:
1)引用計數法
如果一個對象沒有被任何引用指向,則可視為垃圾;
缺點:不能檢測到環的存在;
2)根搜尋演算法:
根搜尋演算法就是通過一系列名為“GC Roots”的對象作為起始點,
從這些節點開始向下搜尋,搜尋所走過的路徑成為引用鏈,當一個對象
到GC Roots沒有任何引用鏈相連時,則認為該對象未被引用。
(3)放這些對象佔用的記憶體

總得來說就產生了三種類型的回收演算法:
1)標記-複製
它將可用記憶體容量劃分為大小相等的兩塊,每次只使用其中的一塊。當這一塊用完之後,
就將還存活的對象複製到另外一塊上面,然後在把已使用過的記憶體空間一次理掉。
它的優點是實現簡單,效率高,不會存在記憶體片段。缺點就是需要2倍的記憶體來管理。
2)標記-清理
標記清除演算法分為“標記”和“清除”兩個階段:首先標記出需要回收的對象,
標記完成之後統一清除對象。它的優點是效率高,缺點是容易產生記憶體片段。
3)標記-整理
標記操作和“標記-清理”演算法一致,後續操作不只是直接清理對象,
而是在清理無用對象完成後讓所有 存活的對象都向一端移動,並更新引用其對象的指標。
因為要移動對象,所以它的效率要比“標記-清理”效率低,但是不會產生記憶體片段。
4)基於分代的假設
由於對象的存活時間有長有短,所以對於存活時間長的對象,
減少被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.