美文网首页
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面试题

    1、简述 Go 语言GC(垃圾回收)的工作原理 Go1.3采用标记清除法, Go1.5采用三色标记法,Go1.8采...

  • go三色回收

    [toc] 垃圾回收的知识很早之前就了解了,现在回过头在看,发现有了新的问题,新的理解 存在的问题 为什么必须三色...

  • go三色回收(二)

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

  • golang sync .pool

    Go 是一个自动垃圾回收的编程语言,它的算法我们后续会讲到,主要就是采用三色并发标记算法标记对象并回收。我们可以不...

  • Golang GC算法

    概括 Go的垃圾回收官方形容为 非分代 非紧缩 写屏障 三色并发标记清理算法。非分代:不像Java那样分为年轻代和...

  • Go语言——垃圾回收GC

    Go语言——垃圾回收GC 参考: Go 垃圾回收原理 Golang源码探索(三) GC的实现原理 Getting ...

  • Go垃圾回收之三色标记算法

    转自公众号“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/SFJoSSbvv3Ky...

  • Go 垃圾回收机制(三)

    Go语言的垃圾回收采用的是三色算法。这里有白色,灰色和黑色三种颜色。程序开始时所有对象都被标注成白色,随着程序的运...

  • 现代的垃圾回收机制(Go 垃圾回收机制概述)

    现代的垃圾回收机制(Go 垃圾回收机制概述) 关于 Go GC策略的见解 细节你可以到 Hacker News 和...

  • Golang之GC

    参考 图解Golang的GC算法 搞懂Go垃圾回收 Golang垃圾回收 屏障技术

网友评论

      本文标题:go三色回收

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