Golang三色标记法
三个集合,颜色分别为白、灰、黑;1.把所有对象放入白色集合;2.遍历GC-Roots直接可访问到的节点,将其从白色集合放入灰色集合;3.遍历灰色集合,将灰色集合引用的对象从白色放入灰色集合,最后将自己放入黑色集合;4.重复3操作,直到灰色集合中的元素为空;5.通过写屏障检测对象变化,重复以上操作;6.回收白色集合中的对象
三个集合,颜色分别为白、灰、黑;1.把所有对象放入白色集合;2.遍历GC-Roots直接可访问到的节点,将其从白色集合放入灰色集合;3.遍历灰色集合,将灰色集合引用的对象从白色放入灰色集合,最后将自己放入黑色集合;4.重复3操作,直到灰色集合中的元素为空;5.通过写屏障检测对象变化,重复以上操作;6.回收白色集合中的对象