2.5.1 :117 > a = 'a' + 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a'+ 'a' + 'a' + 'a' + 'a' + 'a'
=> "aaaaaaaaaaaaaaaaaaaaaaaa"
2.5.1 :118 > a.size
=> 24
2.5.1 :119 > ObjectSpace.memsize_of a
=> 65
2.5.1 :120 > b = 'aaaaaaaaaaaaaaaaaaaaaaaa'
=> "aaaaaaaaaaaaaaaaaaaaaaaa"
2.5.1 :121 > b.size
=> 24
2.5.1 :122 > ObjectSpace.memsize_of b
=> 40
为什么都是 24 size 的字符串,ObjectSpace.memsize_of
的结果不同呢?
另外,说 RVALUE > 23 bytes 就会 storing any extraneous information – that doesn't fit in the slot – in a different location outside the Ruby heap page -> 指的是 OS heap 吗?而且从上面看,为什么 a 的 size 会大于 40?
如果是的话,为什么这里在算 ruby memory 的时候还要算上 any external data 上面两图出自这篇文章 https://www.joyfulbikeshedding.com/blog/2019-03-14-what-causes-ruby-memory-bloat.html
显然我看起来是没算这个 any external data 的呀