写点什么

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:281156
用户头像

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

关注

评论

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

个人

z

Mybatis【12】-- Mybatis多条件怎么查询?

秦怀杂货店

mybatis

心仪的岗位

正午看星星

作业

Soul 学习笔记---搭建编译项目(一)

fightingting

Soul网关

产品经理训练营第一章作业

铭白

产品经理

第1周总结

老元宵

Soul学习笔记---运行 soul-examples-dubbo(三)

fightingting

Soul网关

甲方日常 86

句子

工作 随笔杂谈 日常

产品经理00期训练营第一周作业 4班

mas

产品经理训练营

深入剖析RSA密钥原理及实践

vivo互联网技术

算法 https 公钥加密 rsa

经验说丨华为云视频Cloud Native架构下实践

华为云开发者联盟

架构 微服务 华为云 CloudNative

智能手表

张老蔫

28天写作

云原生动态周报 | KubeEdge被评为2020十大边缘计算开源项目

华为云原生团队

云计算 云原生 边缘计算 华为云 边缘技术

经常觉得每天时间不够用,试试合批吧!

Justin

心理学 时间管理 28天写作

项目管理系列(6)-能力成熟度

Ian哥

28天写作

产品经理训练营作业00

KingSwim

ReentrantLock原理分析

旺旺

Java ReentrantLock JUC lock

芯片领域产品经理的发展

Lujohn

产品经理 芯片 产品经理训练营 极客大学产品经理训练营 PM

一张自查清单

熊斌

学习 个人总结 成长笔记 28天写作

Java学习(一)

灵霄

java基础

Soul 网关实践 04|dubbo 服务接入网关

哼干嘛

轻松几步教你将React Native 项目运行在Web端

华为云开发者联盟

html 大前端 Web API React Native

绩效管理,上下同心者胜(三)

一笑

管理 绩效 28天写作

如何处理消息队列中的重复消息

废材姑娘

RocketMQ

一个button的成长过程

德育处主任

CSS html css3 html/css 28天写作

如何恶意使用微信视频号 | 视频号 28 天 (12)

赵新龙

28天写作

产品经理训练营 - 第一章作业

joelhy

产品经理训练营

听说没,原来Python抢京东的飞天茅台作者没更新,现在又来了一个Go语言版本的

谙忆

第 1 周作业

老元宵

汽车行业产品经理备忘录(作业三)

Rui

期货合约系统软件开发|期货合约APP开发

系统开发

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