第17章 垃圾回收

17.1 概述

三色标记和写屏障

这是让标记和用户代码并发的基本保障,基本原理:

  • 起初所有对象都是白色的。
  • 扫描找出所有可达对象,标记为灰色,放入待处理队列。
  • 从队列提取灰色对象,将其引用对象标记为灰色放入队列,自身标记为黑色。
  • 写屏障监视对象内存修改,重新标色或放入队列。
    当完成全部扫描和标记工作后,剩余的不是白色就是黑色,分别代表待回收和活跃对象,清理操作只须将白色对象内存收回即可。

我的问题:

  • 什么叫可达对象?
  • 其引用对象是指什么?
  • 写屏障是什么东东?具体运行机制是什么样的?

控制器

控制器全程参与并发回收任务,记录相关状态数据,动态调整运行策略,影响并发标记单元的工作模式和数量,平衡CPU资源占用。当回收结束时,参与next_gc回收阈值设置,调整垃圾回收触发频率。

辅助回收

某些时候,对象分配速度可能远快于后台标记。这会引发一系列恶果,比如堆恶性扩张,甚至让垃圾回收永远无法完成。
此时,让用户代码线程参与后台回收标记就非常有必要。在为对象分配堆内存时,通过相关策略去执行一定限度的回收操作,平衡分配和回收操作,让进程处于良性状态。

你可能感兴趣的:(第17章 垃圾回收)