Ruby Ruby 的对象占几个字节,大家进来总结

anleb · 2012年06月18日 · 最后由 zw963 回复于 2012年06月23日 · 3768 次阅读

我们知道 ruby 没有值类型,但是我想知道,ruby 任何都是对象,请问这个对象被分配内存的时候占几个字节?

匿名 #1 2012年06月18日

当然和具体对象有关了。。

如果你问的是变量的话应该和不同架构 CPU 有关吧

这和具体的 Ruby 实现,具体的对象都有关系。

以 MRI 64 位机器为例:

值类型 nil, true, false, 小整数和符号 8 字节

对象类型一种是堆的

struct RObject {
    VALUE flags;
    VALUE klass;
    struct {
        long numiv; // 实例变量数
        VALUE *ivptr; // 指向实例变量数组,可以为空
        struct st_table *iv_index_tbl; // 指向共用的实例变量索引表
    } heap;
};

至少得 4 * 8 + 4 = 36 字节

一种是嵌入的

struct RObject {
    VALUE flags;
    VALUE klass;
    VALUE ary[3]; // 默认是 3, 但可以改
};

至少得 3 * 8 = 24 字节

膜拜一下楼上的两位...

我对于这些细节也很感兴趣,不过不知道什么时候才有时间去把 C 重新拾起来...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号