美文网首页
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