golang v1.8 : 三色标记清除-混合写屏障 栈空间怎么 回收的

saberwtq · · 584 次点击 · 开始浏览    置顶

有2个问题 想请教Golang 友友们 问题1 : golang v1.8 : 三色标记清除-混合写屏障 中前2条规则 栈空间引用的对象 全部标记为黑色,那么栈空间的对象 再什么时候删除? 问题2 : golang v1.8 : 三色标记清除-混合写屏障 中后2条规则 是只作用于堆空间上? 还是 也会作用于栈空间? golang v1.8 : 三色标记清除-混合写屏障 具体操作 1、GC开始将栈上的对象全部扫描并标记为黑色(之后不再进行第二次重复扫描,无需STW) 2、GC期间,任何在栈上创建的新对象,均为黑色 3、被删除的对象标记为灰色。 4、被添加的对象标记为灰色。 优点:避免了re-scan,极大的减少了stw的时间 满足条件:变形的弱三色不变式 分析 第一步:相当于栈上的删除写屏障:保证了不会原来被栈引用的栈对象被删除引用后,又被其他栈上对象引用,但是由于没有删除写屏障却被回收 第二步:相当于栈上的插入写屏障:保证了栈上新加对象不会由于没有写入屏障,从而被删除引用的时候被错误回收 第三步:满足删除写屏障 第四步:满足插入写屏障

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

584 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传