写点什么

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

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

关注

评论

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

一次“诡异”的JVM缓存加载问题排查

AI乔治

Java 缓存 架构 JVM

transient关键字的作用以及几个疑问的解决

秦怀杂货店

序列化 反序列化 transient

权威报告发布:京东智联云首次参评即跻身机器学习卓越表现者阵营

京东科技开发者

人工智能 云计算 供应链

Mybatis【2】-- 多个mapper文件以及namespace作用

秦怀杂货店

mybatis Mapper namespace

serialVersionUID作用是什么以及如何生成的?

秦怀杂货店

Java 序列化 serialVersionUID 反序列化

Java反射说得透彻一些

秦怀杂货店

Java 反射 java反射

背后技术:双11还能创造什么?

人工智能 数据挖掘 大数据 科技

线程池运用不当的一次线上事故

AI乔治

Java 架构 高并发 线程池

快速理解二十三种设计模式(速记)

simon

设计模式 23种设计模式 Java设计模式

影响王兴的一本书

池建强

读书笔记 无限游戏 王兴

【涂鸦物联网足迹】涂鸦云平台标准指令集说明

IoT云工坊

人工智能 cpu 物联网 智能家居 指令集

从“小众”到“首选”,推动云原生产业落地华为云作用几何?

华为云开发者联盟

云计算 架构 容器

亿级大表分库分表实战总结(万字干货,实战复盘)

比伯

Java 编程 程序员 架构 计算机

普渡科技荣登甲子光年“2020中国最具商业潜力的20家机器人Cool Vendor”

DT极客

Spring Boot 监听 Redis Key 失效事件实现定时任务

Bruce Duan

Redis监听 监听过期键

下笔如有神:这是一个基于营销行业的 AI 技术实践

京东科技开发者

人工智能 自然语言处理 nlp

五面进军饿了么!复盘总结11月上半月大厂面试真题,押题命中率高达95%以上

Java架构追梦

Java 阿里巴巴 架构 面试

记一次 Java 服务性能优化

AI乔治

Java 架构 性能优化 高性能

完美!阿里P8仅用242页笔记,就由浅入深讲解了SQL概念

Java~~~

Java sql 阿里巴巴 SQL语法 sql查询

anyRTC AI降噪|让声音更清晰

anyRTC开发者

人工智能 AI 音视频 WebRTC RTC

你以为只是简单的排序?(二)

书旅

数据结构与算法 Go 语言

Spring / Spring boot 异步任务编程 WebAsyncTask

Bruce Duan

异步任务编程 WebAsyncTask

成年人的世界都不容易-看看做到年薪50万的程序员,到底有多累?

Java架构师迁哥

HTTP2服务器推送的第一次尝试

Gopher指北

HTTP2.0 Go 语言

排名前 16 的 Java 工具类

Bruce Duan

java工具类

在Android中使用DataBinding(Kotlin)

simon

android Android进阶 JetPack DataBinding 数据绑定

python+requests对app和微信小程序进行接口测试

测试人生路

Python 接口测试

Mybatis【2.1】-- 从读取流到创建SqlSession发生了什么?

秦怀杂货店

数据库 mybatis SQLSession

甲方日常 51

句子

工作 随笔杂谈 日常

JVM系列-java内存模型(JMM)

诸葛小猿

JMM Java内存模型 共享变量读写

你还在使用迭代器删除集合数据,out了,Java 中函数removeIf 不香么

Geek_6f0746

Java JAVA集合 Java迭代器

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