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页面的发布说明。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
2014年web开发者应该学习的技术盘点
web开发行业发展迅速,每天总有新的技术、框架、语言或技术方法诞生,对大部分人来说都喜欢学习“所有东西”,但这不符合实际!所以,在2014年,作为Web开发者应该学习什么呢?
-
QA技能差距:测试人员需足够的编写测试脚本的能力
如果QA专业人员都需要具备一项技能的话,那就是编写测试脚本的能力。因为测试人员来希望获得自动化测试逻辑结果,这就需要QA测试专家来编写软件能够执行的测试脚本。
-
Github项目中使用率最高的Java/Ruby/JS库
提到开源,相信不少人会想到Github,目前它的托管数量已经超过了一百万。上面几乎涵盖了各种类型的项目库,当然,参与贡献的开发者数量也是极多。
-
JVM垃圾收集器使用调查:CMS最受欢迎
近日,Plumbr公司对特定垃圾收集器使用情况进行了一次调查研究,研究数据使用了84936个案例。在明确指定垃圾收集器的13%的案例中,并发收集器(CMS)使用次数最多。