新手问题 问一个关于 OS\ObjectSpace 内存的细节问题,求熟悉的朋友来一发解答

Awlter1 · 2019年07月10日 · 1064 次阅读
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的呀

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册