1、對象優(yōu)先在Eden分配
大多數(shù)情況下贞岭,對象在新生代Eden區(qū)中分配亩钟。當(dāng)Eden區(qū)沒有足夠的空間進(jìn)行分配時,虛擬機(jī)將發(fā)起一次MinorGC牲剃。
MinorGC和FullGC的區(qū)別:
新生代GC(MinorGC):指發(fā)生在新生代的垃圾收集動作遣疯,因為Java對象大多都具備朝生夕滅的特性,所以MinorGC非常頻繁凿傅,一般回收速度也比較快缠犀。
老年代GC(Major / FullGC):指發(fā)生在老年代的GC,出現(xiàn)了MajorGC聪舒,經(jīng)常會伴隨至少一次的MinorGC辨液。MajorGC的速度一般會比MinorGC慢10倍以上。
2箱残、大對象直接進(jìn)入老年代
所謂的大對象是指滔迈,需要大量連續(xù)內(nèi)存空間的Java對象,最典型的大對象就是那種很長的字符以及數(shù)組被辑。
3燎悍、長期存活的對象將進(jìn)入老年代
虛擬機(jī)采用了分代收集的思想來管理內(nèi)存,那么內(nèi)存回收時就必須能識別哪些對象應(yīng)放在新生代盼理,哪些對象應(yīng)放在老年代谈山。為了做到這點,虛擬機(jī)給么個對象定義了一個對象年齡(Age)計數(shù)器榜揖。如果對象在Eden出生并經(jīng)過第一次MinorGC后仍然存活勾哩,并且能被Survivor容納的話抗蠢,將被移動到Survivor空間中举哟,并且對象年齡設(shè)為1。對象在Survivor區(qū)中每熬過一次MinorGC迅矛,年齡就增加1歲妨猩,當(dāng)它的年齡增加到一定程度(默認(rèn)為15歲),就將會被晉升到老年代中秽褒。