11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

Ruby 1.9.3 Preview 1 发布了,通过延迟清理 GC 改善 GC 的停顿

  • 2011-08-08
  • 本文字数:1025 字

    阅读完需:约 3 分钟

Ruby 1.9.3 Preview 1 已经发布了,它增加了 API,还更新了 GC——延迟清理 GC。

InfoQ 采访了 Narihiro Nakamura ,他向 Ruby 1.9.3 提交了延迟清理 GC 的更改。

InfoQ:延迟清理 GC 和之前的 GC 有什么不同?

简单(非延迟)标记清理 GC 以原子方式执行标记和清理。此外,它会清理整个堆,并把所有存活对象关联自由列表。 对于延迟清理,每次调用对象分配都会清理堆,直到它找到合适的自由对象为止。

InfoQ:因此延迟清理 GC 的主要优势是更短的停顿时间?即停顿时间被限制为找到足以继续的自由空间的时间?

对的。延迟清理改善了 GC 的响应时间,即出现最坏情况的时间减少了。然而,它也减少了 GC 的整体吞吐量。 我使用一个基准测试程序在 MRI 里比较了简单 M&S GC 和延迟清理 GC。

最大 GC 时间:48.00ms => 28.00ms(58%)

全部 GC 时间:0.83ms => 0.92ms(110%)

InfoQ:你认为哪种程序行为在延迟清理 GC 上会有不良表现?

如果程序创建了许多长生命周期的对象,延迟清理可能无法找到自由对象。在这种情况里,延迟清理会在一个单独对象的分配上耗费很长时间。我想,在大多数情况里,它的性能还是优于 M&S GC 的。

InfoQ:对于 MRI 1.9.x 未来的 GC 工作和改善你有没有什么计划?

有的,我正在为 MRI 创建一个并行标记 GC。 目前,在我的机器上(使用“make rdoc”)生成 RDoc 文档需要大约 80 秒。30% 的时间花在 GC 上。我可以让这个 GC 时间在双核 CPU 的机器上有大约 40% 的改善。

我计划在 RubyConf 2011 上讲讲这方面的内容。

延迟清理 GC 的实现在 Ruby 的 gc.c 文件里,特别是 lazy_sweep gc_lazy_sweep 两个函数。

Ruby 标准库的更改可以在 Ruby 1.9.3 Preview 1 发布说明里看到。其它的更改和许可证相关,根据发布说明:“Ruby 的许可证已经从带有 GPLv2 的双许可证变成带有两个条款的 BSDL 的双许可证了”。

既然 Ruby 1.9.3 已经出来了,现在是时候看看 Ruby 1.8.x 和 Ruby 1.9.2 的状态了。Ruby 托管商已经迁移到 1.9.x 上了。Heroku 引入了 Cedar 栈,强化他们的 PaaS; Cedar 提供了 Ruby 1.9.2,没有 1.8.x 。Engine Yard 的 AppCloud 现在默认就是 Ruby 1.9.2

此前还计划了另一个版本帮助开发者迁移到 1.9.x—— Ruby 1.8.8,现在已经取消了。Ruby 1.8.6 已经很好的做到这点了,尤其是有 RDoc 3 等类库为它提供 1.8.7 风格的支持。

支持 1.9.x 的 Gem 的状态可以在 isitruby19.com 上看到。

还有什么把你困在 1.8.x 上?

查看英文原文: Ruby 1.9.3 Preview 1 Released, Improves GC Pauses With Lazy Sweep GC

2011-08-08 19:111549

评论

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

【粉丝需求】如何把一个前端网页都搞下来?

孙叫兽

大前端

微信业务架构

Fleng

架构实战营

Python系列:初遇python

Bob

Python 编程 4月日更

Wireshark数据包分析学习笔记Day26

穿过生命散发芬芳

Wireshark 数据包分析 4月日更

翻译:《实用的Python编程》02_00_Overview

codists

Python

图解云原生应用设计模式

倪朋飞

Kubernetes 云原生

架构实战营课程1作业

求索

学习 架构实战营

史上最全的Java面试题库宝典,Github上标星200k,太香了!

Java架构之路

Java 程序员 架构 面试 编程语言

金三银四旗开得胜!春招字节正式批4面,顺利拿到offer

Java 编程 程序员 架构 面试

架构实战营模块1作业

半夏

学习 架构实战营

Flink集成Iceberg在同程艺龙的实践

Apache Flink

flink

架构实战营 模块1 课后作业

Keyto

模块一课后作业

追随哆咪

架构实战营

常用正则表达式整理【总结】

孙叫兽

正则表达式 大前端 正则

vagrant同步目录问题引发的一系列问题

尧二水丶

vagrant 虚拟机

微信业务架构图

@oo?金樱子

业务架构:微信与学生管理系统

我不是坏人

有哪些可以提高代码质量的书籍推荐?

JavaGuide

Java 架构 计算机基础 重构 代码质量

模块1作业

王硕

架构实战营

软件架构设计分层模型和构图思考

xcbeyond

方法论 分层架构 架构设计 4月日更

阿里的 RocketMQ 如何让双十一峰值之下 0 故障?

阿里巴巴云原生

容器 运维 云原生 k8s 消息中间件

架构实战营 模块一 课后作业

Lingjun

架构实战营

换工作需要做哪些准备

zhou

职业规划

架构实战营 模块一 总结

Pitt

给视频添加雪花飘落特效

老猿Python

OpenCV 音视频 图形图像处理 视频特效 引航计划

如何让使命、愿景、价值观落地

石云升

价值观 使命 愿景 28天写作 4月日更

架构实战营 模块一 作业

Pitt

架构实战营 模块一作业

Dylan

架构实战营

聪明人的训练(六)

Changing Lin

4月日更

Knative 基于流量的灰度发布和自动弹性实践

阿里巴巴云原生

Serverless 容器 开发者 云原生 k8s

双非本化学跨专业,投岗阿里/滴滴后端三面,最终拿下offer

Java 编程 程序员 架构 面试

Ruby 1.9.3 Preview 1发布了,通过延迟清理GC改善GC的停顿_Ruby_Werner Schuster_InfoQ精选文章