微信号:infoqchina

介绍:有内容的技术社区媒体

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

2014-01-02 19:48 InfoQ

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页面的发布说明。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 使用data URIs 大师经典 — Martin Fowler的"持续集成" CSS模块 达内java大数据BIG1511班就业喜报|最高薪资18000元 Spring.NET学习笔记11——自定义对象行为(基础篇)