JVM内存模型中,Heap区被分为新生代和老年代两个区域,新生代又分为Eden+Survivor1+Survivor2
新生代收集算法主要是使用复制算法,老年代收集算法主要使用标记-清理或标记-整理算法。
堆内存划分如下:
新生代在发生首次YGC的时候,Eden内存活的对象会被复制到S1;再发生YGC的时候,Eden内存活的对象和S1内存活的对象复制到S2,同时清除Eden内的对象和S1内的对象,再次发生YGC的时候,Eden内存活的对象和S2内存活的对象会被复制到S1,同时清除Eden内的对象和S2内的对象,以此往复循环,生存次数超过阈值的对象进入老年代,可以总结得出:每次YGC发生之后,S1和S2总会有一个是空的
那么,在JVM的新生代内存中,为什么除了Eden区,