三色标记回收

三色标记回收算法中的3个颜色分别是 白、黑、灰.三色标记回收算法大致如下:

  1. 将初始化的对象置为白色
  2. 所有根(全局变量或栈上的变量)可及的对象置为灰色
  3. 遍历这些被置位灰色的对象,灰色对象引用到的对象都置为灰色,完成对灰色变量的遍历后,将灰色对象置为黑色
  4. 继续遍历其他被灰色对象
  5. 所有灰色对象遍历完后,就只会剩下黑色的和白色的对象
  6. 所有这些黑色的对象都是根可达的,白色的都是根不可达的,白色对象都删除掉。

以上步骤就是三色标记回收的理论了。 非常简单吧, 至少在STW(STOP THE WORLD)的情况下.

但是在mutator(mutator 与 collector分别是执行应用程序与执行GC)和GC同时工作的时候要满足 黑色对象只会引用灰色的对象或其他黑色对象。 变得复杂起来了。



blog comments powered by Disqus

Published

2015-05-15

Categories


Tags