因此,Ruby企业版文档指出GC设置中的所有值都是以插槽为定义的:http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning(例如,RUBY_HEAP_MIN_SLOTS)。我们通过试错来优化应用程序的最小插槽大小和增量以获得最佳性能(我们有足够的机器来了解不同值如何影响malloc调用和Full GC的数量)。但是有件事一直在困扰我:1个插槽有多大(以字节为单位)?
来自Ruby源代码:
* sizeof(RVALUE) is
* 20 if 32-bit, double is 4-byte aligned
* 24 if 32-bit, double is 8-byte aligned
* 40 if 64-bit
$ rvm use ruby-1.9.2-p136
$ gdb ruby
(gdb) p sizeof(RVALUE)
$1 = 40
1.9 版本的默认值为 8K
http://svn.ruby-lang.org/repos/ruby/trunk/gc.c(搜索 HEAP_SIZE)
请注意,每当它耗尽空间并需要重新分配时,在 1.9 中它会指数级地分配更多堆。
在 1.8 中,它会分配越来越大的堆。
1个插槽
是 sizeof(struct RVALUE)
的大小,这取决于机器。
$1 =
是什么意思?“40”表示什么单位? - John Bachirp
=打印
;$1
是返回值;40
是字节大小: http://zh.wikipedia.org/wiki/Sizeof - arrtchiu