我们知道 ruby 没有值类型,但是我想知道,ruby 任何都是对象,请问这个对象被分配内存的时候占几个字节?
当然和具体对象有关了。。
如果你问的是变量的话应该和不同架构 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 重新拾起来...