1. 程式人生 > >深入拆解虛擬機器(九)垃圾回收(下)

深入拆解虛擬機器(九)垃圾回收(下)

堆記憶體劃分

Java虛擬機器將堆分為新生代和老年代,並且對不同代採用不同的垃圾回收演算法。其中,新生代分為Eden區和兩個大小一致的Survivor區,並且其中一個Survivor區是空的


Minor GC

(1)在只針對新生代的Minor GC中,Eden區和非S空urvivor區的存活物件會被複制到空的Survivor區中,當Survivor區中的存活物件複製次數超過一定數值時,它將會被晉升到老年代

(2)因為Minor GC只針對新生代進行垃圾回收,所以在列舉GC Roots的時候,它需要考慮從老年代到新生代的引用。為了避免掃描整個老年代,Java虛擬機器引入名為卡表的技術,大致地標出可能存在老年代到新生代引用的記憶體區域