写点什么

Ruby 2.1 迁到分代式垃圾收集,以应对其在大规模部署方面所遭受的批评

  • 2013-09-20
  • 本文字数:861 字

    阅读完需:约 3 分钟

Ruby 的创建者 Matz 于上周末在 Baruco (Barcelona Ruby 会议)上宣布, Ruby MRI 2.1 将迁到分代式垃圾收集(GC),此举有望成为这门语言的一项重要性能提升。Ruby 2.1 预计在今年年底前发布。

巧合的是,在当天的另一场演讲中,Github 的 Vicent Marti 强烈地批评了 Ruby MRI 的垃圾收集实现方式,将当前的标记& 清除算法称为“双头怪兽”。Vicent 阐述了Ruby GC 的局限性如何经常影响Github 这样一个大规模的Ruby 部署。

一方面是由于标记阶段缓慢(这一阶段实际上会停止应用程序,并顺序遍历整个对象图以确定活动对象)。另一方面是由于清除阶段不准确,它可能最终清除实际上仍在使用的C 扩展(或C 扩展指向的)Ruby 对象。

Vicent 提到,使用诸如 Valgrind 这样的工具或者预先执行静态分析有助于减少此类问题,但他也强调,Ruby MRI 目前的 GC 实现方式存在根本缺陷,并建议,一旦 JRuby Rubinius 实现了与 MRI 同样的功能集,就将大规模的 Ruby 部署向 JRuby 或 Rubinius 迁移。

在 Ruby 目前的 GC 实现方式速度慢这一点上,New Relic 的 Chris Kelly 演讲中表达了同样的观点,并强调,一个典型的Rails 应用程序启动时会加载成千上万的对象,而GC 执行的标记阶段需要对这些对象进行一遍又一遍地分析。不过,Chris 也与大家分享了 New Relic 的 Ruby GC 基本问题测试结果,在 Ruby 1.8 和 1.9 之间,执行垃圾收集的时间减少了 48%。

据 Chris 说,这表明 MRI 团队正在进行重大改进以升级 Ruby 在这方面的实现方式,尤其是宣布迁到分代式垃圾收集(据 Matz 说,此举有望将标记阶段耗时减少一半)。

在有些演讲中还有一些批评是关于缺少 Ruby MRI 垃圾收集实现方式方面的英文文档,而 Chris 在其演示文稿中列出了一些推荐内容,如“罕见的GC 探讨”。

Matz 还宣布了 Ruby 2.1 的其它一些功能增强,包括字符前缀(“i”表示 complex 数字、“r”表示 rational 数字、“f”代表 frozen 字符串)、 refinements (全功能)和更快(大约 15%)的 RDoc 文档生成速度。

查看英文原文:**** Ruby 2.1 Garbage Collection to Address Criticism on Large Scale Deployments

2013-09-20 23:492520
用户头像

发布了 256 篇内容, 共 76.4 次阅读, 收获喜欢 11 次。

关注

评论

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

四面拿到京东Java岗 30K offer 全过程分享

Java架构师迁哥

ceph-csi源码分析(2)-组件启动参数分析

良凯尔

Kubernetes 源码分析 Ceph CSI

DAPP系统开发运营版,DAPP系统开发案例源码

系统开发咨询1357O98O718

深入理解Spring框架之AOP子框架

邱学喆

aop 动态代理 cglib ProxyConfig AspectJ

想拿到10k-40k的offer,这些技能必不可少!作为程序员的你了解吗?

Java架构师迁哥

ceph-csi源码分析(1)-组件介绍与部署yaml分析

良凯尔

Kubernetes 源码分析 Ceph CSI

流量分析中常见的指标简单总结

五分钟学大数据

4月日更

解决方案的设计与积累——课程总结

Deborah

BUG!从编写 Loader 到窥探大佬 Debug 全过程

HZFEStudio

小程序 webpack 构建工具

介绍一款能取代 Scrapy 的爬虫框架 - feapder

星安果

Python 爬虫 Scrapy feapder

思维训练

Ryan Zheng

封神总结!蚂蚁金服+滴滴+美团+拼多多+腾讯15万字Java面试题

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

2个月从0到1,一年5次迭代,百度“量桨”效率喷涌背后的工作秘诀

脑极体

区块链如何推动数字化转型?

CECBC

区块链

当时尚撞上区块链,为潮酷创意赋予专属

CECBC

时尚产业

150页的剑指Offer解答PDF,它来了!!!

秦怀杂货店

ARST-日常打卡3

pjw

封神总结!12W字“多线程与高并发实战手册”成功助我涨薪19K

比伯

Java 程序员 架构

JVM-技术专题-虚拟机知识遗漏盘点

洛神灬殇

JVM

Web3.0时代需要什么样的企业级协作工具?

猫Buboo

iOS 面试策略之语言工具-Swift

iOSer

ios swift 面试

Redis的常见问题

赖猫

c++ redis Linux 后端

高效获取信息的几点经验

彭宏豪95

效率 信息 阅读 4月日更

Go 的 UTF-8 实现

Rayjun

utf-8 Go 语言

怎么做到的?3个月入职蚂蚁金服(Java岗)从年薪10W到年薪30W

Java架构师迁哥

Redis-Cluster集群

Sakura

4月日更

都在看的18WJava核心成长笔记 让我成功收获字节、阿里、腾讯大厂Offer!

学Java关注我

Java 编程 架构 架构师 程序人生】

Vue源码思想在工作中的应用

执鸢者

Vue 大前端

【网络】【操作系统】详解select、poll、epoll

Linux服务器开发

后端 网络编程 Linux服务器开发 网络io eopll

比微信文件传输助手更好用的传输工具|Telegram

彭宏豪95

微信 效率 文件传输 4月日更 Telegram

Ruby 2.1迁到分代式垃圾收集,以应对其在大规模部署方面所遭受的批评_Ruby_Manuel Pais_InfoQ精选文章