两色标记回收

两色垃圾回收算法中的2个颜色分别是 白、黑. 算法大致如下:

  1. 将初始化的对象置为白色
  2. 所有根(全局变量或栈上的变量)可及的对象置为黑色
  3. 清理所有白色对象
  4. 将幸存的黑色对象全部置为白色

这应该是最简单的mark-sweep算法. Lua5.0 就是采用的这种算法。 这种算法的缺点一目了然。 不是增量的GC算法。因此GC过程中mutator肯定是被paused的。



blog comments powered by Disqus

Published

2015-05-15

Categories


Tags