关键点:
1.分清jvm的标准与实现
2.分代手机算法再g1是逻辑上的划分之前的垃圾回收器可以理解是物理上的
3.标记算法
4.内存连续空间
答案: 1.主流垃圾回收器CMS g1都使用了分代收集算法。
2.正常系统运行时会有海量临时对象产生,这些对象短期内大部分就会失效,对于这些对象我们把他们临时放到新生代。
3.新生代满了之后需要清理垃圾对象,我们会把有效对象赋值到老年代,以便后续继续使用。
4.为了更有效的区分哪些对象应该被复制到老年代,所以在新生代划分出了eden去和s0,s1区域
5.细化后的新生代内部被再次划分以便保证高速读写同时内存连续,
1.新对象会被保存在eden区(开始是空的所以内存连续),eden区满了会把有效对象赋值到s0(s0也是空的所以也是连续空间)。
2.清空eden区(再次写入时又是连续空间)
3.s0和s1在命名上互换原来的s1等待写入(空的)
4.eden区再次满了,重复上面步骤
6.eden区通过复制/清楚算法保证了读写连续性。(因为新生代的对象产生和销毁非常频繁,所以才采用了清空的方式)