BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Ruby 2.1发布,带来新的垃圾收集器

| 作者 Jeff Martin 关注 16 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2014年1月1日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Ruby 2.1正式版已经发布,带来了很多预期的改进,其中包括对垃圾收集器的大幅改动,这一改进将在现在和未来带来一些性能提升。

Ruby 2.1中的垃圾收集器实现了一种分代垃圾收集形式,Ruby把它的这种实现称为“RGenGC(Restricted Generational Garbage Collection)”。它替换了Ruby之前版本中采用的“Mark & Sweep(标记与清除)”实现。Ruby开发者Koichi Sasada在2013年4月的一次演讲中提到,对Ruby开发者而言,挑战在于实现一个可以在同一堆内处理保护对象和非安全对象的GC算法。

因为重写所有现有的C扩展以利用新的GC并不现实,所以作为实现的一部分,RGenGC实现中使用了写屏障(Write-Barrier)。就像Sasada在RubyConf 2013的演进(PDF)中所解释的那样,最初的两种选择是:A) 根本不实现分代垃圾收集(与Ruby 2.0和之前版本中的做法一样),或B)实现分代垃圾收集,同时需要重写所有C扩展。RGenGC在这两种选择之外提供了第三种方式。

RGenGC与现有扩展高度兼容,同时仍然带来了性能提升。常用的Array、String、Hash、Object和Numeric等对象都有写屏障保护,因此能够利用RGenGC系统。未来在内部库和外部库上的工作也为以后进一步改进性能带来了可能性。

新的垃圾收集系统不是唯一的改进,其他改进包括RDoc 4.1.0、RubyGems 2.2.0以及一些库的更新。完整的改进列表请参见该项目GitHub页面的发布说明

查看英文原文:Ruby 2.1.0 Released, Delivering new GC

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT