想象一下,你是一个垃圾清理工,需要在一个巨大的仓库里找出哪些东西是垃圾,哪些还有用。但是,仓库里的工人们还在不停地工作,不断地搬运、添加、删除物品。你不能让所有工人都停下来等你清理完垃圾,那样效率太低了。
并发标记算法就是解决这个问题的方案:让垃圾清理工(GC线程)和仓库工人(应用线程)同时工作,互不干扰。
就像交通信号灯一样,我们用三种颜色来标记对象的状态:
白色对象 - “还没检查过”
灰色对象 - “正在检查中”