常见垃圾回收算法

什么是垃圾回收(GC)

垃圾回收机制是一种找到内存中的垃圾将其释放并回收空间的机制

常见的垃圾回收算法

  • 引用计数法
  • 标记清楚法
  • 标记整理法
  • 分代回收法

引用计数法

  • 核心思想:设置引用数,判断当前的引用数是否为0
  • 设置引用计数器
  • 引用关系改变时修改引用数值
  • 引用数值为0时立即回收
    优点
  • 发现垃圾立即回收
  • 最大限度减少程序暂停
    缺点
  • 无法回收循环引用的对象
  • 时间开销较大

标记清除法

  • 核心思想:分标记和清楚两个阶段完成
  • 遍历所有对象找到标记活动对象
  • 遍历所有对象清除没有标记的对象
  • 回收相应空间
    优点
  • 可以回收循环引用的对象
    缺点
  • 回收的内存碎片化,不连续
  • 不会立即回收垃圾对象

标记整理算法

  • 核心思想:在标记清除的基础上做优化,标记阶段和标记清除算法一致,但是清除阶段会先执行整理,移动对象的位置,保证回收内存空间的连续性
  • 遍历所有对象找到标记活动对象
  • 执行整理,移动对象的位置
  • 遍历所有对象清除没有标记的对象
  • 回收相应空间
    优点
  • 可以回收循环引用的对象
    缺点
  • 回收的内存碎片化,不连续
  • 不会立即回收垃圾对象

你可能感兴趣的:(常见垃圾回收算法)