美文网首页
对象在年轻代的移动过程

对象在年轻代的移动过程

作者: 倚仗听江 | 来源:发表于2022-02-20 11:27 被阅读0次

    JVM刚启动时,新创建的对象先在eden区分配,第一次MGC时,eden区中存活的对象年龄加1,并移动到S0区。第二次MGC时,eden区和S0区中存活的对象年龄各加1,并将eden区和S0区存活的对象都移动到S1区,清空eden区和S0区,将S1区和S0区的角色互换(是角色互换而不是内存数据的复制)。接下来的MGC都是这样,同时回收eden区和S0区,将存活的对象移动到S1区,清空eden区和S0区,将S1区和S0区的角色互换。

    S区的存在是为了容纳eden区垃圾收集后的存活对象,接收完这些存活对象后可以清空eden区为下一次对象创建做准备。而有两个S区(S0区和S1区)的意义就是eden区和S0区之间需要一个缓冲的内存,来承载eden区和S0区存活的对象,这样也能避免eden区和S0区的空间碎片化(基于标记复制算法)。

    相关文章

      网友评论

          本文标题:对象在年轻代的移动过程

          本文链接:https://www.haomeiwen.com/subject/kpnmlrtx.html