美文网首页
java内存分代模型(用于分代垃圾回收算法)

java内存分代模型(用于分代垃圾回收算法)

作者: 糯米团子123 | 来源:发表于2022-09-06 11:45 被阅读0次
    1. 内存分代模型
      分代模型并不是一种垃圾回收算法,而是一种内存管理模型。将java中的内存分为不同区域,在GC时不同区域采用不同的算法,提高回收效率

      内存分代模型将java堆内存中的区域分成两部分新生代(new)和老年代(old),两块区域的默认比例为1:2

      新生代又分为一个伊甸园区(eden)和两个存活区(survivor),s0和s1,默认比例为8:1:1

      新生代的GC被称为YGC/MinorGC,老年代的GC被称为Full GC/MajorGC。

    2. 分代垃圾回收算法

    2.1 新对象出生在eden中,对象过大在eden装不下则直接进入老年代

    2.2 第一次YGC:新生代对象大多数会被回收(80%-90%),剩余活着的对象会被复制到s0区,清空eden

    2.3 第二次YGC:把活着的对象(eden+s0区)到复制到s1区,清空eden和s0

    2.4 再次YGC:把活着的对象(eden+s1区)到复制到s0区,清空eden和s1

    2.5 每经过一次GC,没有被回收的对象年龄+1,当存活对象到达一定年龄后,新生代对象进入老年代(一般是15,CMS回收器默认是6,其他垃圾回收器是15)

    2.6 YGC复制时,如果对象过大,s区装不下也会直接将对象拷贝到老年代。

    相关文章

      网友评论

          本文标题:java内存分代模型(用于分代垃圾回收算法)

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