写点什么

Ruby VM 综述:MacRuby 0.8、Rubinius 1.2、MRI 1.8.7 及 1.9.2 更新

  • 2010-12-29
  • 本文字数:890 字

    阅读完需:约 3 分钟

目前,Ruby VM 正以稳健的步伐前进着,前几周又有很多新发布。

近日, Rubinius 1.2 发布了,在内存效率与调试方面带来了很多改进。Evan Phoenix详细介绍了 Rubinius 1.2 的众多改变,比如每个对象的内存使用等:

我们集中精力改进每个对象的内存使用。特别是对象如何在内存中存储其实例变量。由于 Ruby 并不需要声明实例变量,因此建模实例变量最简单的方式就是使用散列。这正是 Rubinius 过去的做法。问题出在拥有少量实例变量的类上。在这种情况下,散列表的尺寸就变得很重要了,为了存储一个字(4 或 8 个字节),就需要使用 100 个字节的内存。 新的代码基于对类的一个很容易观察到的假设,换句话说,在创建类的实例前它会定义好绝大多数方法(通常是所有方法)。我们在创建好类的一个实例后就运行一些代码,它会查找该实例可用的所有方法。这意味着所有方法都定义在类本身、父类以及混合在模块中。我们通过这些方法构建出他们所用的所有的实例变量表。

现在,我们可以很清楚地计算出这个类的实例到底需要占据多少内存,这样就可以将实例变量存储到内存中而无需散列表了。通过这种方式,内存的使用从 100 个字节下降到了 8 个字节(在 64 位机器上)。

长久以来,Rubinius 一直拥有一个强大的 Debugger API,现在 Rubinius 1.2 增加了 ruby-debug 支持。调试内存使用或内存泄漏问题是由堆转储特性所支持的,可以使用 Rubinius::VM.dump_heap("/path/to/file") 实现。创建堆转储的另外一种方式是使用 Rubinius 的另一个特性:Query Agent,监测工具可以凭借它访问 Rubinius 信息并触发某些动作。

MacRuby 0.8 也于近日发布了,主要改进了稳定性与兼容性问题。该项目现在集中于 1.0 版的发布:

从现在开始,我们的发布频率要比以前快很多。我们希望用户能够更频繁地测试 MacRuby 并报告更多的 Bug。 然而,我们并不期望在随后的发布中引入重要的特性,因为现在我们都将精力放在了稳定性和兼容性问题上了。

最后,旧版与新版的 MRI 都发布了补丁版本: MRI 1.8.7 with p330 以及 1.9.2 with p136,后者是暨 1.9.2 发布之后的首次更新

查看英文原文: Ruby VM Roundup: MacRuby 0.8, Rubinius 1.2, MRI 1.8.7 and 1.9.2 Updates

2010-12-29 09:281259
用户头像

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

关注

评论

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

游戏运营方法论

石云升

游戏化运营 运营创新

有它的加持,单机玩转百亿大数据不是梦!

易观大数据

永续合约交易系统源码开发,合约交易所开发

13530558032

区块链承兑商支付系统开发,USDT支付软件搭建

13530558032

SpreadJS 纯前端表格控件应用案例:PtLims云平台

葡萄城技术团队

用Emoji解释编程语言中的map、filter、reduce

wangkx

Python Python PEP

云中谁寄锦书来,免费生成一封七夕情书吧

郭旭东

阿里云 七夕 云效

Python3 单例模式

wangkx

Python Singleton

阿里为什么推荐使用LongAdder,而不是volatile?

王磊

Java 性能 volatile

Tencent AI Lab 日常实习生招聘

InfoQ_d00afcd122a8

招聘

Java中的volatile关键字

wangkx

Java volatile

青山不改,绿水长流

escray

学习 面试

SpreadJS 纯前端表格控件应用案例:资料填报系统

葡萄城技术团队

SpreadJS 纯前端表格控件应用案例:实验室信息化管理系统

葡萄城技术团队

兼具艺术情怀和舒适旅居体验,木莲庄做了什么

InfoQ_967a83c6d0d7

CECBC区块链专委会副主任吴桐主讲成都市委宣传部区块链和数字

CECBC

区块链 数字货币

Python中的global关键字的用法以及如何设置项目级的Global变量

陈磊@Criss

oeasy教你玩转linux010104灵魂之问whatis

o

PostgreSQL函数、索引和视图操作Demo展示

wangkx

postgresql

3D渲染集群,你了解多少?

华为云开发者联盟

容器 华为云 集群 3D渲染 3D模型

SpreadJS 纯前端表格控件应用案例:物业行业全面预算管理系统

葡萄城技术团队

ARTS 挑战打卡第十四周(200810-200816)

老胡爱分享

ARTS 打卡计划

ARTS 挑战打卡第十五周(200817-200823)

老胡爱分享

ARTS 打卡计划

悬挂引用是如何被Rust消灭的?

袁承兴

rust 内存模型 指针 引用 泛型

一键超频 双C Carry,普通用户如何挖潜英特尔十代酷睿?

E科讯

乘风人脸识别来了,企业能得到什么?

ToB行业头条

人工智能 人脸识别 百度大脑

工作就是解决一个又一个问题

escray

学习 面试

从“人居美学”的理念出发,木莲庄酒店很不一样

InfoQ_967a83c6d0d7

话题讨论 | 作为一名程序员,沟通能力是否重要?

InfoQ写作社区官方

程序员 写作平台 话题讨论

为什么会出现零代码开发平台?

代码制造者

编程语言 低代码 企业信息化 零代码 编程开发

大数据思维与运用

石云升

大数据 数据建模 数据驱动

Ruby VM综述:MacRuby 0.8、Rubinius 1.2、MRI 1.8.7及1.9.2更新_Ruby_Werner Schuster_InfoQ精选文章