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

anleb · June 18, 2012 · Last by zw963 replied at June 23, 2012 · 3780 hits

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

Unknow user #0 June 18, 2012

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

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

#1 楼 @jjym 明白了,

这和具体的 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 重新拾起来...

You need to Sign in before reply, if you don't have an account, please Sign up first.