美文网首页
go三色回收

go三色回收

作者: lucasgao | 来源:发表于2021-03-27 21:42 被阅读0次

    [toc]

    垃圾回收的知识很早之前就了解了,现在回过头在看,发现有了新的问题,新的理解

    存在的问题

    1. 为什么必须三色,二色的话会有什么问题
    2. 插入写屏障为什么不行
    3. 为什么必须使用混合写屏障,删除写屏障为什么不行。

    为什么必须三色

    三色具体是指:

    • 黑色。已经扫描结束的对象
    • 灰色。待扫描的对象
    • 白色。未扫描的对象

    具体实现中,我们遍历灰色对象,标记为黑色。并把指向的新对象标记为灰色。

    但是如果是二色的话,那么就只有黑色和白色。

    那么遍历的操作是不能暂停的。因为如果恢复的话,面对黑色对象我们不知道这个是已经扫描过的还是未扫描的。

    参考

    1. https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/
    2. https://github.com/golang/proposal/blob/master/design/17503-eliminate-rescan.md
    3. http://wiki.luajit.org/New-Garbage-Collector

    相关文章

      网友评论

          本文标题:go三色回收

          本文链接:https://www.haomeiwen.com/subject/zixuhltx.html