java知识体系

HotSpot为什么要分为新生代和老年代?


HotSpot为什么要分为新生代和老年代?
HotSpot根据对象存活周期的不同将内存划分为几块,一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。在新生代中,每次垃圾收集时都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。而老年代中因为对象存活率高、没有额外空间对它进行分配担保,就必须使用“标记—清理”或者“标记—整理”算法来进行回收。


其中新生代又分为1个Eden区和2个Survivor区,2个Survivor区通常称为From Survivor和To Survivor区。