Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 由nil数组占用的大小_Ruby - Fatal编程技术网

Ruby 由nil数组占用的大小

Ruby 由nil数组占用的大小,ruby,Ruby,比如说,我有一个零数组 a = [nil,nil,nil] 数组的大小(字节)是多少 我使用ruby 1.9.3p484 我尝试了ObjectSpace.memsize_of()方法,但是输出非常混乱 >> a = [nil,nil,nil] => [nil, nil, nil] >> ObjectSpace.memsize_of(a) => 0 >> a = [nil,nil,nil,nil] => [nil, nil, nil, nil

比如说,我有一个零数组

a = [nil,nil,nil]
数组的大小(字节)是多少

我使用ruby 1.9.3p484

我尝试了ObjectSpace.memsize_of()方法,但是输出非常混乱

>> a = [nil,nil,nil]
=> [nil, nil, nil]
>> ObjectSpace.memsize_of(a)
=> 0
>> a = [nil,nil,nil,nil]
=> [nil, nil, nil, nil]
>> ObjectSpace.memsize_of(a)
=> 32
>> a = [nil,nil,nil,nil,nil]
=> [nil, nil, nil, nil, nil]
>> ObjectSpace.memsize_of(a)
=> 40

将嵌入大小小于或等于(默认值为3)的阵列,以提高小型阵列的性能。基本上,一个包含3项或更少项的数组

这解释了您的示例令人困惑的输出

require 'objspace'
(1..10).to_a.each { |i| p [nil] * i, ObjectSpace.memsize_of([nil] * i) }
[nil]
0
[nil, nil]
0
[nil, nil, nil]
0
[nil, nil, nil, nil]
32
[nil, nil, nil, nil, nil]
40
[nil, nil, nil, nil, nil, nil]
48
[nil, nil, nil, nil, nil, nil, nil]
56
[nil, nil, nil, nil, nil, nil, nil, nil]
64
[nil, nil, nil, nil, nil, nil, nil, nil, nil]
72
[nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
80
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
请注意,
ObjectSpace.memsize\u of(array)
只提供数组对象本身的大小,不包括其项