【Java入門系列】記憶體回收

來源:互聯網
上載者:User

標籤:垃圾   roots   佔用   證明   節點   計數器   root   添加   不可用   

記憶體回收

如果不進行記憶體回收,記憶體遲早都會被消耗空,因為我們在不斷的分配記憶體空間而不進行回收。除非記憶體無限大,我們可以任性的分配而不回收,但是事實並非如此。

記憶體回收其實做了兩件事:1、發現無用的對象;2、回收無用對象佔用的記憶體空間。

記憶體回收演算法

1、應用計數法

對象中添加一個引用計數器,每當一個地方引用這個對象時,計數器值+1;當引用失效時,計數器值-1。任何時刻計數值為0的對象就是不可能再被使用的。這種演算法使用情境很多,但是,Java中卻沒有使用這種演算法,因為這種演算法很難解決對象之間相互引用的情況。

2、應用可達法

通過一系列稱為“GC Roots”的對象作為起始點,從這些節點向下搜尋,搜尋所走過的路徑稱為引用鏈,當一個對象到GC Roots沒有任何引用鏈(即GC Roots到對象不可達)時,則證明此對象是停用。

分代記憶體回收

 

【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.