写点什么

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:524223
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

发布
暂无评论

【论文速读】| 超越随机输入:一种基于机器学习的新型硬件模糊测试方法

云起无垠

鸿蒙开发之如何实现帧动画

彭康佳

鸿蒙 帧动画

构建领先数据基础设施,天翼云携手信通院发布《大数据平台云化改造实践指南(2024年)》

编程猫

人工智能与大数据:新时代的技术融合与未来展望

天津汇柏科技有限公司

大数据 人工智能’

测试管理圆桌讨论会 | 解锁测试管理的核心问题,提升你的管理实力

测试人

软件测试

测试管理圆桌讨论会 | 解锁测试管理的核心问题提升你的管理实力

测吧(北京)科技有限公司

测试

SQL的执行顺序以及它的重要性与元数据

松子(李博源)

数据中台 元数据 SQL Plan 血缘分析

一次压测引发的数据库CPU飙升

阿里技术

压测 故障排查 排查思路 排查

文献解读-基因编辑-第十一期|《通过CRISPR介导的Gaa纯合c.1935C>A(p.D645E)点突变的庞贝氏病敲入小鼠模型的建立和表征模拟了……》

INSVAST

基因数据分析 生信服务 基因编辑

mac苹果窗口辅助工具:Magnet for mac 2.14.0中文免激活版

你的猪会飞吗

mac软件下载

MES制造执行系统有什么数据采集方式?

万界星空科技

数据采集 mes 设备管理 万界星空科技 设备数据采集

"Pandabuy事件后,淘宝代购集运系统如何强化仿牌敏感词风控策略"

tbapi

淘宝代购集运系统 Pandabuy 逆向海淘

六月惊喜| 事件分析Plus上线

ClkLog

数据分析 埋点 自定义 开源软件

场景化解决方案|AR远程协作

AR玩家

Rokid Vision pro 炬目AR 炬目科技 AR远程协作

AI日报|我国人工智能核心产业规模已达5784亿元!阿里通义Qwen2成斯坦福大模型榜单最强开源模型!

可信AI进展

#人工智能

国内怎样使用GPT4 turbo

蓉蓉

GPT-4 Turbo

算力服务先锋!和鲸科技入选《2024中国智算产业生态图谱》

ModelWhale

Qt(C++)使用QChart静态显示3个设备的温度变化曲线

DS小龙哥

物联网

Long-Range Wi-Fi Performance: A Comparison of IPQ5018 and IPQ5332 Chips

wallyslilly

深入比较:HTTP 和 RPC 的区别

Apifox

程序员 gRPC 网络协议 RPC HTTP

星辰考古:TiDB v2.x 回忆杀

TiDB 社区干货传送门

版本升级 新版本/特性解读

IPQ9554, IPQ9570, IPQ9574-wifi7 soc network-What are the differences?

wifi6-yiyi

cpu router WiFi7

嘉为蓝鲸告警中心:支撑大型证券公司高效处理高并发告警事件

嘉为蓝鲸

告警管理 可观测

LED显示屏:投资还是消费?

Dylan

数字化 LED LED显示屏 led显示屏厂家 户内led显示屏

干货满满!亚信安慧亮相PostgreSQL峰会,分享AntDB数据库国产化运维之路

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 6 月 PK 榜

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