新生代内存被划分为 Eden、survivor-from、survivor-to三个空间,由于新生代大多数对象-‘朝生夕死’的特性,存活率较低,所以在化分比例上我们一般用较小的内存来存放存活对象,比例大概是8:1:1,下边说一下三块区域 进行 Minor GC的工作流程。
(1)Eden分配new对象空间不足时,触发Minor GC,此时会对Eden和survivor-from区域内的存活对象,进行复制到survivor-to区域。(此时如果survivor-to空间不足则会直接晋升到老年代)
(2)Eden和survivor-from区域内非存活对象全部清除
(3)交换survivor-from 和 survivor-to 区域角色,为下一次Minor GC做准备。
总结:
(1)Minor GC 总会给自己留后路,随时准备一个空的区域进行存方存活对象。
(2)并非新生代对象到达年龄时才会被晋升到老年代,在第一步时也是会发生的。