为什么散列后哈希数组的内存大小会增加?
让我们说,有一系列哈希。如果我们检查该数组的内存大小,它返回的值是44。 现在,如果我对该数组应用sort,那么它的内存大小现在会增加。
require 'objspace'
array = [{:a=>1, :b=>1}, {:a=>1, :b=>3}, {:a=>1, :b=>2}, {:a=>1, :b=>4}, {:a=>1, :b=>6}, {:a=>1, :b=>7}]
ObjectSpace.memsize_of(array)
>> 44
ObjectSpace.memsize_of(array.sort_by{|x| -x[:b]})
>> 68
sorted_array = array.sort_by{|x| -x[:b]}
>> [{:a=>1, :b=>7}, {:a=>1, :b=>6}, {:a=>1, :b=>4}, {:a=>1, :b=>3}, {:a=>1, :b=>2}, {:a=>1, :b=>1}]
ObjectSpace.memsize_of(sorted_array)
>> 68
答案 0 :(得分:1)
直接来自the documentation:
返回消耗对象的内存大小。
请注意,返回大小不完整。您只需要将此信息作为提示处理。特别是
T_DATA
的大小可能不正确。