在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Go 1.6 将进一步改进垃圾收集器

  • 2015-09-11
  • 本文字数:997 字

    阅读完需:约 3 分钟

尽管 Go 1.5 刚刚发布,仍然相对较新,但是 Go 团队已经在致力于改进其新的低延迟并发垃圾收集器,希望 Go 更适合新的应用领域。Google 工程师 Austin Clements Rick Hudson 如是

Go 1.5 用新的垃圾收集器代替了原来的STW(stop-the-world) GC,解决了延迟问题。当负载较重时,每50ms,新的GC 的活动时间可以控制在10ms 以下,从而使Go 程序在一般情况下能运行得更快些。在更极端的情况下,停顿可以从300ms 降到4ms

Go 1.6 的目标是进一步稳定 GC,并在以下几个方面做出改进:

  • 状态协调(State coordination):Go 1.5 GC 有个主要瓶颈是从 Go 1.4 继承来的,源自其集中式的 GC 协调器(coordinator),这是一个单独的 goroutine,它会将工作进一步分派给 worker goroutine 去完成。一种解决方案是用去中心化的状态机代替集中式协调器。这样修改有个额外的好处,使得重新设计标记完成屏障(mark completion barrier)成为可能,因为它已经变得非常凌乱,而且性能很差。
  • 信用系统(Credit system):Go 1.5 在两个不同的地方使用了一个信用系统:一个是确保清扫(sweeping)在一个 GC 周期和下一次触发堆操作(the next heap trigger)之间完成,一个是确保扫描(scanning)在触发堆操作(an heap trigger)和随后实现堆处理目标之间完成。改进信用系统的一种建议方法是,使其操作总是在 black 阶段进行,以避免未完成的分配操作进入下一个 GC 周期。
  • 标记结束(Mark termination):根据 Clements 和 Hudson 的介绍,在 Go 1.5 中,标记结束阶段是停顿时间的大头。这里的目标是尝试并确保大部分应用可以在 10ms 停顿的阈值下运行,这也是 Go 1.5 在很多情况下已经实现了的。希望所做修改的复杂度较低或中等,比如把 finalizer 扫描从标记结束阶段移到并发扫描,这样对于每 1GB 大小的堆,应该可以节省 1ms,以及去掉一个成本很高的计数循环,对于较大的堆,这个循环占去了标记阶段的另外一半。
  • sweeper 和 scavenger:某些程序会在 sweeper 上消耗大量时间,在这上面投入些精力,应该有性能改进。一个非常激进的方案是完全去掉 sweeper。还有一个不那么激进的方案,可以在 GC 阶段最后,尽早释放较大的对象,并且在所有的系统上支持 scavenger,不管物理页面是多大。

上面只是对计划所做改进的一个概览,欲全面了解,可以阅读原始文档。文档中还有进一步指向 GitHub issues 的链接,这些 issues 记录 了每个改变背后的理由以及建议方案。

2015-09-11 16:443737
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 152.2 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

KW 喜报 | KaiwuDB 斩获 2023 数博会“优秀科技成果”奖

KaiwuDB

KaiwuDB 离散制造业解决方案 2023数博会

瓴羊Quick BI:可视化大屏让数据呈现更直观

夜雨微澜

使用containerd从0搭建k8s(kubernetes)集群

tiandizhiguai

k8s

里氏替换原则究竟如何理解?

磐远

Java 设计模式 设计原则 里氏替换

飞桨AI4S污染物扩散快速预测模型,亮相全国数据驱动计算力学研讨会

飞桨PaddlePaddle

飞桨 #人工智能

快速掌握Kubernetes中的核心概念

穿过生命散发芬芳

k8s 6 月 优质更文活动

原点安全携“金融机构消费者个人信息保护解决方案”亮相 2023 中国金融数字化转型发展大会

原点安全

数据安全 金融机构 个人信息保护

提升用户体验:在小程序环境中充分利用Ionic框架

FinFish

Ionic 跨端开发 小程序容器 跨端框架 小程序容器技术

架构成长之路 | 图解分布式共识算法Paxos教会协议

阿里技术

paxos协议 分布式算法

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中

福大大架构师每日一题

算法、 福大大架构师每日一题

如今做泛娱乐出海,你需要融云《社交泛娱乐出海作战地图》

融云 RongCloud

产品 互联网 融云 泛娱乐 出海

高能预警!融云WICC发布《社交泛娱乐出海作战地图》

融云 RongCloud

互联网 地图 融云 即时通信 出海

C语言编程—可变参数

芯动大师

C语言 可变参数 6 月 优质更文活动

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

阿里云大数据AI技术

人工智能 AIGC Prompt 企业号 6 月 PK 榜

把钢铁侠战衣交给Z世代,没想到联想商用PC可以这么炫酷!

脑极体

联想 PC

社交泛娱乐出海如何抓住AIGC?我在融云WICC上看到了答案

融云 RongCloud

社交 融云 泛娱乐 出海 通讯

你会怎样设计云原生场景下的IOC框架?

M

原创 云原生 ioc spring ioc

中盐集团:以财务共享为基础,引领盐行业数智化转型

用友BIP

财务共享

STM32+DHT11监测环境的温湿度

DS小龙哥

6 月 优质更文活动

直播回顾|走进元服务,携手小强停车探索鸿蒙新流量阵地

HarmonyOS SDK

HMS Core

使用华为云开发者插件一键部署应用到ECS

ide 云计算 插件 华为云

成败关键!一对一直播源码平台搭建需要的条件

山东布谷科技

软件开发 源码搭建 一对一直播源码 直播源码

助力金融业数字化转型,原点安全将出席“2023 中国金融业数字化转型发展大会”

原点安全

数据安全 金融行业 uDSP 消费者个人信息保护

出海如何从0到1?融云《社交泛娱乐出海作战地图》实战经验揭秘

融云 RongCloud

互联网 社交 融云 泛娱乐 出海

聊聊数科公司如何与现有数智平台厂商协同作战

用友BIP

数科公司 数智平台 数智平台白皮书

中企出海,海外商旅费控的关键点是什么?

用友BIP

中企出海

OpenHarmony工程模板和开发语言

坚果

OpenHarmony 6 月 优质更文活动

2023开放原子全球开源峰会高峰论坛成功举办

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 高峰论坛

DevStudio编辑器使用技巧

坚果

OpenHarmony3.2 6 月 优质更文活动

专注开发者体验 | GitOps 实现 Kuberentes 持续部署

亚马逊云科技 (Amazon Web Services)

云原生

智能人才发现,帮助企业精准找人,快速识人

用友BIP

数智人力

Go 1.6将进一步改进垃圾收集器_语言 & 开发_Sergio De Simone_InfoQ精选文章