老年代TenuredGeneration的垃圾回收算法实现

第一种:标记清除
它是最基础的收集算法。
原理:分为标记和清除两个阶段:首先标记出所有的需要回收的对象,在标记完成以后统一回收所有被标记的对象。
特点:(1)效率问题,标记和清除的效率都不高;(2)空间的问题,标记清除以后会产生大量不连续的空间碎片,空间碎片太多可能会导致程序运行过程需要分配较大的对象时候,无法找到足够连续内存而不得不提前触发一次垃圾收集。
地方 :适合在老年代进行垃圾回收,比如CMS收集器就是采用该算法进行回收的。

第二种:标记整理
原理:分为标记和整理两个阶段:首先标记出所有需要回收的对象,让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
特点:不会产生空间碎片,但是整理会花一定的时间。
地方:适合老年代进行垃圾收集,parallel Old(针对parallel scanvange gc的) gc和Serial old收集器就是采用该算法进行回收的。

JVM 源码分析10 垃圾回收03

GC前准备

JVM 源码分析10 垃圾回收03

JVM 源码分析10 垃圾回收03

工作函数接着调用follow_root()方法,完成活跃对象的标记工作

 

相关文章:

  • 2021-10-21
  • 2021-05-15
  • 2021-12-13
  • 2021-08-19
  • 2021-06-02
猜你喜欢
  • 2022-01-02
  • 2021-06-17
  • 2021-12-30
  • 2021-11-22
  • 2021-05-01
  • 2021-05-10
  • 2021-12-02
相关资源
相似解决方案