新生代又分为Eden区、From Survivor、To Survivor三个区:
- Eden区:Java对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当Eden区内存不够的时候就会触发MinorGC,对新生代区进行一次垃圾回收。
- From Survivor:上一次GC的幸存者,作为这一次GC的被扫描者。
- To Survivor:保留一次MinorGC过程中的幸存者。
MinorGC的过程是复制,清空,互换。MinorGC采用复制算法:
- eden、From Surviro复制到To Survivor,年龄+1:首先,把Eden和From Survivor区域中存活的对象复制到To Survivor区域(如果对象的年龄达到了老年的标准,则复制到老年代区),同时把这些对象的年龄+1(如果To Survivor空间不够就放到老年区);
- 清空eden、From Survivor;
- To Survivor和From Survivor互换,原To Survivor成为下一次GC时的From Survivor区。
注意:本文归作者所有,未经作者允许,不得转载