Arrays 为什么哈希数组的内存大小在排序后会增加?(红宝石色)

Arrays 为什么哈希数组的内存大小在排序后会增加?(红宝石色),arrays,ruby,sorting,hash,Arrays,Ruby,Sorting,Hash,为什么哈希数组的内存大小在排序后增加? 比方说,有一个哈希数组。若我们检查该数组的内存大小,它返回的值是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}] Obj

为什么哈希数组的内存大小在排序后增加?

比方说,有一个哈希数组。若我们检查该数组的内存大小,它返回的值是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
直接来自:

返回obj的消耗内存大小

请注意,返回的大小不完整。您只需将此信息作为提示处理。尤其是
T\u数据的大小可能不正确

如果您想深入挖掘并理解为什么该值只是一个“提示”,那么和将是一个很好的起点