- 原理
內(nèi)存空間的回收 - 實(shí)現(xiàn)方式
1.標(biāo)記清除法(since 1960)
image.png
分為兩個(gè)階段
- 標(biāo)記階段:標(biāo)記出可以回收的對(duì)象。
- 清除階段:回收被標(biāo)記的對(duì)象所占用的空間
兩個(gè)缺點(diǎn) 標(biāo)記和清除的效率都不高,容易產(chǎn)生大量不連續(xù)的內(nèi)存碎片,給后續(xù)大對(duì)象沒有足夠的連續(xù)的空間從而提前觸發(fā)新的一次垃圾收集動(dòng)作.
垃圾算法都是在此基礎(chǔ)上進(jìn)行修改的
2.復(fù)制算法(新生代比較好)
只使用一半內(nèi)存,要回收的時(shí)候把"活"著的拷貝過去,存活的少復(fù)制的時(shí)間少,存活的多復(fù)制的時(shí)間長.
3.標(biāo)記壓縮算法
新生代有比較好的復(fù)制算法,老年代存活率比較高,這樣會(huì)有多的復(fù)制才做不合適,標(biāo)記壓縮算法是將存活的對(duì)象壓縮到內(nèi)存的一端,使他們緊湊的排序到一起,然后對(duì)邊界以外的內(nèi)存進(jìn)行回收,結(jié)束后,已用和未用都再各自的一邊.解決清除算法效率低和容易產(chǎn)生大量內(nèi)存碎片的問題.
4.引用計(jì)數(shù)法
它的引用計(jì)數(shù)器就加 1 ,引用失效時(shí)就減 1 。當(dāng)引用計(jì)數(shù)器中的值變?yōu)?0 ,則該對(duì)象
就不能被使用,變成了垃圾。假如A類里面有B類 B類里面有A類,計(jì)數(shù)器就不能為0,就無法被回收
5.根搜索法(可達(dá)性分析)
基本思想就是選定一些對(duì)象作為 GC Roots,以Roots為起點(diǎn)開始向下搜索,當(dāng)一個(gè)對(duì)象不可達(dá)時(shí),即證明了他可以被回收處理
6.分代收集算法?。?a target="_blank">https://blog.csdn.net/en_joker/article/details/79737533)
引用文中的一個(gè)圖
image.png
GC原理以及實(shí)現(xiàn)方式
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 當(dāng)一個(gè)對(duì)象不再被引用的時(shí)候,內(nèi)存回收它占領(lǐng)的空間,以便空間被后來的新對(duì)象使用。除了釋放沒用的對(duì)象,垃圾收集也可以清...
- 好文章,記錄下 文末有自己整理的Xmind總結(jié)~ 轉(zhuǎn)載出處https://uestc-dpz.github.io[...
- 1. 應(yīng)用程序內(nèi)存結(jié)構(gòu) 應(yīng)用程序內(nèi)存空間通常劃分為五個(gè)部分 1.1 靜態(tài)/全局存儲(chǔ)區(qū) 存放全局和靜態(tài)變量,靜態(tài)分配...
- 一次CMS GC問題排查過程(理解原理+讀懂GC日志) - iamzhongyong - ITeye技術(shù)網(wǎng)站 h...
- 上文已經(jīng)介紹了JVM內(nèi)存模型中線程私有的部分(虛擬機(jī)棧、本地方發(fā)棧、程序計(jì)數(shù)器),那么本篇文章就來探討下JVM中線...

