个人看法的不一定对,Java堆内存分为新生代老年代,新生代又分为edn区s1和s2区,我们创建一个对象后会分配在edn区,每次垃圾回收后会将edn区存活对象移入s1,同时清空edn区。而s1和s2就是复制清除算法了,每次将存活的对象移到空的区域然后清空。对象每次转移年龄增大一岁,到了一定阈值(默认15)后移入老年代,而老年代使用cms垃圾收集器的话就使用的标记清楚算法,标记存活然后过一遍所有对象,没标记的回收。