一名扛、判斷對(duì)象是否可被回收
1.1 引用計(jì)數(shù)法
缺點(diǎn):無(wú)法解決對(duì)象之間循環(huán)依賴的問(wèn)題
1.2 可達(dá)性分析算法
當(dāng)一個(gè)對(duì)象GC Roots 沒(méi)有任何引用鏈相連冯吓,說(shuō)明此對(duì)象不可達(dá)磷支。
GC Roots 對(duì)象包括以下幾種:
- 棧幀中的局部變量表引用的對(duì)象
- 方法區(qū)中類靜態(tài)屬性引用的對(duì)象
- 方法區(qū)中常量引用的對(duì)象
- Native方法引用的對(duì)象
二萍倡、垃圾回收算法
- 標(biāo)記-清除算法
缺點(diǎn):效率低,且會(huì)產(chǎn)生碎片 - 復(fù)制算法
Eden:Survivor = 8:1
如果另一塊survivor空間不足以存放上一次新生代存活的對(duì)象娃弓,這些對(duì)象將通過(guò)【分配擔(dān)钡涓瘢】進(jìn)入老年代。
-標(biāo)記-整理算法
-分代收集算法(主流)
新生代 -> 復(fù)制算法(對(duì)象存活率低)
老年代 -> 標(biāo)記-整理算法(對(duì)象存活率高)
三台丛、內(nèi)存分配與回收策略
Min GC: 發(fā)生在新生代的垃圾回收
Major GC/ Full GC: 發(fā)生在老年代的垃圾回收耍缴,出現(xiàn)Full GC,至少伴隨一次 Min GC
- 對(duì)象優(yōu)先在** Eden區(qū)**分配,如果空間不夠挽霉,觸發(fā)一次Min GC
- 大對(duì)象直接進(jìn)入老年代(虛擬機(jī)參數(shù)控制)
- 長(zhǎng)期存活的對(duì)象進(jìn)入老年代
- 動(dòng)態(tài)對(duì)象年齡判斷
- 空間分配擔(dān)保