写点什么

1.8.x 的新修复解决了内存泄漏问题并改进了性能

  • 2009-01-08
  • 本文字数:826 字

    阅读完需:约 3 分钟

就性能而言,目前 Ruby 1.9.1 和 JRuby 领导着 Ruby 的实现。然而由于种种原因,转到这两个实现中的任何一个都不是那么容易的事情,因为 Ruby 1.9.x 在有些地方与 1.8.7 不兼容,同时 JRuby 仍旧缺乏一些使用本地扩展的 Ruby 库。由于这个原因,MRI 1.8.x 还会继续存在一段时间,那么我们可能对其性能的改进产生兴趣。

目前 Brent Roman 在一定程度上改进了 Ruby 1.8.x MRI 的性能。他正不断尝试着修复 Ruby 中的内存泄漏问题

基本的技术就是对 Kurt Stephens 所建议的一个问题的精化。它不仅消除了这行代码的泄漏问题: loop {@x=callcc{|c|c}} 还消除了我们多线程机器人技术应用中的泄漏问题。过去我们所使用的 Ruby 进程在运行一天后常常达到 20+MB,而现在已经降到了 10MB 以下。

正如其所示,泄漏是由 GCC 的优化所导致的:它与 Ruby 的旧式 GC 的交互很差劲

垃圾收集器的内存泄漏问题并不是它本身的错误。问题在于“C”机器栈(machine stack)中充满了对象引用。其主要原因是由于 gcc 编译器创建了过多大的 stack frame 而又没有对其初始化。用在 Ruby 解释器的核心递归表达式程序中的某些“C”构造会生成特别大而又稀疏的 stack frame。函数 rb_eval() 就是最差劲的一个,它会为每次调用都创建 KB 大小的 stack frame,而其又会调用自身几百次。这导致栈的容量急剧膨胀,经常充满了不再使用而又无法移除的对象引用。

Brent提供了一些修复(针对Ruby 1.8.7-patlevel72),目的在于解决这些问题。

当运行在真实世界的Rails 应用上时,测试报告表明该修复对速度的提升效果很明显。同时也报告了一些问题,让我们对其拭目以待吧。

这些修复是开源(Ruby)社区对MRI 改进的又一个证明。 Mod_rails (或 REE) 已经是一个佐证了,它使得 MRI 的垃圾收集器更加友好(参见相关新闻以了解更多)。

MRI 的性能在很大程度上取决于它的编译方式

今年你还打算继续使用Ruby 1.8.x 么?如果是的话,理由呢?

查看英文原文: New Patches for 1.8.x Fix Memory Leaks And Improve Performance

2009-01-08 12:24641
用户头像

发布了 88 篇内容, 共 266.7 次阅读, 收获喜欢 8 次。

关注

评论

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

仅用5个小时纯Java版实现羊了个羊,来看源码吧,还送你108套皮肤

非喵鱼

Java swing 小游戏 羊了个羊

大咖说·施耐德|数智技术,企业绿色低碳转型的催化剂

大咖说

双碳 绿色转型

2022年12月中国数据库排行榜:OceanBase立足创新登榜首,华为腾讯排名上升树雄心

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

matic链佛萨奇系统开发源代码快速部署上线

开发微hkkf5566

企业数字化转型关键路径:构建数据驱动的管控体系

元年技术洞察

数字化转型 数据驱动 方舟平台

MacBook2023免费的系统电脑优化软件CleanMyMac

茶色酒

CleanMyMac CleanMyMac X CleanMyMac X2023

聚焦人机交互智能应用领域,APISIX 在希沃网关的应用与实践

API7.ai 技术团队

api 网关 APISIX 用户案例

如何在 towify 中使用组件切换器配置“点赞”功能?

Towify

微信小程序 编辑器 无代码

小游戏开发者变现攻略

Onegun

小程序 超级app 小游戏

瓴羊Quick BI 权限管理:构建高效企业数据分析运行管理体系

夏日星河

DHorse打包原理

tiandizhiguai

maven 打包工具 构建

开发小游戏都有哪些难点?

FinFish

小游戏 小游戏开发 小程序游戏 微信小游戏

自助取数、即席分析...瓴羊Quick BI助力企业数字化转型

对不起该用户已成仙‖

什么是BPM系统?BPM流程管理系统介绍

优秀

BPM 业务流程管理

【知识分享】关于电子元器件封装的几个小知识

华秋PCB

封装 PCB PCB设计

英特尔着眼系统工艺协同优化理念,推进摩尔定律新浪潮

科技之家

小游戏流量变现瓶颈,新增长点是超级App?

FinFish

小游戏 小程序游戏 微信小游戏 小游戏引擎 流量变现

服开与编排,老兵新传

鲸品堂

电信运营商 12 月 PK 榜

YMatrix 创始人姚延栋,获“最具发展潜力与创新影响力的创业者”称号

YMatrix 超融合数据库

创业 超融合数据库 YMatrix

云服务器代理商选哪家好?理由是什么?

行云管家

云计算 服务器 云服务器

Karmada多云多集群生产实践专场圆满落幕

华为云开发者联盟

云原生 华为云 12 月 PK 榜

GIithub/ipq4018/ipq4028/IPQ4019/IPQ4029/ipq4018/ipq4028/QSDK/wifi5 miniPIe/support openwrt

wallysSK

IPQ4019 ipq4029 IPQ4018 IPQ4028

如何使用Towify在小程序中配置微信登录

Towify

微信小程序 编辑器 无代码

多样化数据看板,瓴羊Quick BI满足企业经营管理需求

对不起该用户已成仙‖

Guitar Pro2023吉他软件最新版本安装包下载

茶色酒

Guitar Pro Guitar Pro8

软件测试丨基于Junit4,利用xUnit框架让你的测试用例可维护性大幅提升

测试人

软件测试 单元测试 自动化测试 测试框架 测试开发

性能达1.5+倍!昇腾AI助力分子动力学模拟研究

华为云开发者联盟

人工智能 华为云 昇腾AI 12 月 PK 榜

数字孪生可视化技术打造未来智慧码头系统

2D3D前端可视化开发

物联网 智慧港口 数字孪生 智慧码头 5G智慧港口

掌握分布式环境缓存更新策略,提高缓存与数据库双写一致性!

C++后台开发

数据库 redis 分布式 中间件 后端开发

开发小游戏的流程及难点汇总

Onegun

小程序 小程序容器 小游戏 小游戏开发

企业级大数据平台智能运维好帮手——星环科技多模数据平台监控软件Aquila Insight

星环科技

1.8.x的新修复解决了内存泄漏问题并改进了性能_Ruby_Werner Schuster_InfoQ精选文章