写点什么

Go 1.4+ 垃圾收集器计划与路线图

  • 2014-08-13
  • 本文字数:1142 字

    阅读完需:约 4 分钟

自从 Go 语言于 2009 年 11 月对外宣布以来,短短几年时间,这门语言发展迅猛,性能也在不断提升,而垃圾收集器的改进正是其中的重要一环。

Go 1.1 中,Go 语言引入了并行垃圾收集器,可以减少程序在多 CPU 上运行时的延迟;同时垃圾收集也更为精确了,以牺牲较少的 CPU 时间为代价,换来了堆内存的显著减少。到了今年 6 月份发布的 Go 1.3 中,精确性有所改进,又实现了检查栈上的值时的精确性。

那后续版本中,垃圾收集器会有怎样的变化呢?Richard L. Hudson 近日撰文介绍了Go 1.4+ 垃圾收集器的计划和路线图。

文中指出,计划于2015 年6 月发布的Go 1.5 的GC 的目标是减少延迟,从而使Go 语言能够满足对响应时间要求比较高的系统。该版本希望将GC 延迟限制在10ms 以内,而且每50ms 保证Go 应用代码有40ms 以上的执行时间。实现上将考虑一种混合式的Stop-the-World(STW)/ 并发垃圾收集器(CGC)。CGC 的主要工作将在一个或多个专用的CPU 上完成,而应用代码则在其他CPU 上执行。

文中提到,用繁复的垃圾收集术语来讲,现在为Go 1.5 提议的垃圾收集器是一种“非分代的、非移动的、并发的、三色的标记清除垃圾收集器”。像分代,JVM 的Hotspot 实现、Google 的v8 JavaScript 引擎等采用的就是分代垃圾收集技术。Hotspot 中的堆区分为年轻代和老年代,不同的代会针对性地选择不同的收集算法。移动对象是复制类垃圾收集算法常用的一种操作,不过移动有一个缺点,需要修改指向被复制对象的所有指针。三色是GC 跟踪过程中的一种标记策略,认定为活对象的标记为黑色,可能是死对象的标记为白色;可以参考这个帖子。正在处理或者需要重新处理的标记为灰色。标记完成之后,仍为白色的则是垃圾。具体算法,感兴趣的读者可以参考《The Garbage Collection Handbook: The Art of Automatic Memory Management》一书。低延迟意味着会影响吞吐量,但是影响程度如何,还有待观察。文中指出,随着CPU 核数的增加,拿出一个或多个核来执行GC,应该不是很大的问题。

至于Go 1.6 这个将于2015 年12 月发布的版本,其GC 将根据1.5 版本的经验、用户反馈和使用案例来改进。1.6 版本很可能会加入指针碰撞分配(bump pointer allocation)和分代复制收集技术。

为配合垃圾收集器的改造,1.4 版本中将去掉使用了Go 指针及各种与并发或复制收集器不兼容的不安全指针结构的C 运行时代码,用户也需要去掉其代码中的不兼容结构。

相关讨论可以参阅 golang-dev 邮件列表。HackerNews 上的讨论也很热烈。有些网友介绍了实际使用体验。感兴趣的读者可以参考。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-13 02:524713
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

如何科学选择LED显示屏的点间距

Dylan

LED LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

中国信通院联合行业巨头启动“可信AI智能体测试床”

测试人

人工智能

AI 怎样颠覆软件开发未来?

代码制造者

AI编程

来领奖啦!StarRocks 社区 2025 布道师计划正式开启

StarRocks

StarRocks 湖仓一体 镜舟科技

AI智上 | 财务数智化筑路,引领企业转型腾飞

用友智能财务

Windows 11 23H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 4 月更新)

sysin

Windows11

手把手教你用micro.item_get接口获取微店商品数据,小白也能轻松上手!

代码忍者

微店商品详情API接口

Amazon Bedrock 上的模型擂台赛:DeepSeek、Nova、Claude,谁是最强文本审核大模型?

亚马逊云科技 (Amazon Web Services)

利用Apipost轻松实现用户充值系统的API自动化测试

数据追梦人

镜舟科技助力某大型电网企业破解数据架构升级难题,打造国产化湖仓标杆

镜舟科技

开源 数据分析 分析型数据库 StarRocks 湖仓

Windows Server 2019 中文版、英文版下载 (2025 年 4 月更新)

sysin

Windows Server

名列前茅!百度文心大模型4.5及X1在中国信通院“方升”大模型基准测试中表现优异

百度Geek说

百度

Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 4 月更新)

sysin

Windows7

ESXi 8.0U3e 免费版发布,含官方免费许可证

sysin

esxi

秘密任务 2.0:如何利用 WebSockets + DTOs 设计实时操作

数据追梦人

Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 4 月更新)

sysin

Windows11

LLM情感分析实战 DeepSeek API

AI时代的一滴水

Python 机器学习 情感分析 DeepSeek v3

Windows 10 on ARM, version 22H2 ARM64 中文版、英文版下载 (2025 年 4 月更新)

sysin

Windows Server

Windows 10 version 22H2 中文版、英文版下载 (2025 年 4 月更新)

sysin

windows

得物自研DGraph4.0推荐核心引擎升级之路

得物技术

高并发 推荐引擎 #大数据

NocoBase 本周更新汇总:部分商业插件改为开源

NocoBase

开源 低代码 插件 无代码 版本更新

Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板

sysin

Windows Server

Windows Server 2016 OVF (2025 年 4 月更新) - VMware 虚拟机模板

sysin

Windows Server

Windows Server 2019 OVF (2025 年 4 月更新) - VMware 虚拟机模板

sysin

Windows Server

Windows Server 2016 中文版、英文版下载 (2025 年 4 月更新)

sysin

Windows Server

VMware ESXi 7.0U3s macOS Unlocker & OEM BIOS 2.7 Intel 网卡特殊定制版

sysin

esxi

文献解读-Identification of driver genes for critical forms of COVID-19 in a deeply phenotyped young patient cohort

INSVAST

基因测序 多组学 Sentieon 变异检测 生物信息分析服务

合合信息发布智能文档处理行业白皮书,破解文档处理效率与安全问题

合合技术团队

人工智能 智能文档 #大数据 文档解析

鸿蒙版Flutter环境配置Windows 版本

坚果

鸿蒙 HarmonyOS 坚果派

AI 和可观测性到底如何整合?

巴辉特

AI 监控 可观测性 Observability Monitoring

企业高分通过哈尔滨等保二级需要哪些安全设备?

黑龙江陆陆信息测评部

Go 1.4+垃圾收集器计划与路线图_语言 & 开发_臧秀涛_InfoQ精选文章