GC原理以及實現(xiàn)方式

  • 原理
      內(nèi)存空間的回收
  • 實現(xiàn)方式
      1.標(biāo)記清除法(since 1960)
       
    image.png

       分為兩個階段
        - 標(biāo)記階段:標(biāo)記出可以回收的對象。
        - 清除階段:回收被標(biāo)記的對象所占用的空間
    兩個缺點 標(biāo)記和清除的效率都不高,容易產(chǎn)生大量不連續(xù)的內(nèi)存碎片,給后續(xù)大對象沒有足夠的連續(xù)的空間從而提前觸發(fā)新的一次垃圾收集動作.
    垃圾算法都是在此基礎(chǔ)上進行修改的
    2.復(fù)制算法(新生代比較好)
    只使用一半內(nèi)存,要回收的時候把"活"著的拷貝過去,存活的少復(fù)制的時間少,存活的多復(fù)制的時間長.
      3.標(biāo)記壓縮算法
       新生代有比較好的復(fù)制算法,老年代存活率比較高,這樣會有多的復(fù)制才做不合適,標(biāo)記壓縮算法是將存活的對象壓縮到內(nèi)存的一端,使他們緊湊的排序到一起,然后對邊界以外的內(nèi)存進行回收,結(jié)束后,已用和未用都再各自的一邊.解決清除算法效率低和容易產(chǎn)生大量內(nèi)存碎片的問題.
      4.引用計數(shù)法
        它的引用計數(shù)器就加 1 ,引用失效時就減 1 。當(dāng)引用計數(shù)器中的值變?yōu)?0 ,則該對象
    就不能被使用,變成了垃圾。假如A類里面有B類 B類里面有A類,計數(shù)器就不能為0,就無法被回收 
      5.根搜索法(可達性分析)
      基本思想就是選定一些對象作為 GC Roots,以Roots為起點開始向下搜索,當(dāng)一個對象不可達時,即證明了他可以被回收處理
      6.分代收集算法?。?a target="_blank">https://blog.csdn.net/en_joker/article/details/79737533)
      引用文中的一個圖
    image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容