目前市面上的垃圾回收期主要分为四种,
1.标记-清理
2.复制算法
3.标记-整理
4.新生代和老年代
开局一张图,内容全靠编,下面上图
新生代老年代图下面主要针对新生代和老年代讲讲
现在的jvm体系主要分为方法区和堆等。
而方法区过去放在永久代,存放在JVM中,新版本中已将永久代废弃,引入元空间的概念,元空间的内存是放到物理内存中的。只有堆中的新生代和老年代是放到JVM内存中的。
新生代、老年代并不是新的算法,只是把标记-清楚,复制和标记-整理放到一起使用。
新生代中分成Eden、Survior from 、Survior to,之间的比例是8:1:1
老年代中主要放存活率比较高的对象和大对象。使用标记清理或标记整理算法。
新产生的对象先放到Eden中,Eden满了之后,再放到Survior from 中,如果这两块内存都满了,就把Eden和Survior from 中存活的对象copy进Survior to中,清空Eden和Survior from ,Survior to 就转变成Survior from 。
如果Survior to无法容纳全部存活的对象,就将存活的对象copy进老年代,如果老年代也容纳不下,就进行full GC(老年代GC)
网友评论