Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby垃圾收集堆插槽大小_Ruby_Garbage Collection - Fatal编程技术网

Ruby垃圾收集堆插槽大小

Ruby垃圾收集堆插槽大小,ruby,garbage-collection,Ruby,Garbage Collection,因此,ruby enterprise文档声明GC设置中的所有值都是在插槽中定义的: (例如RUBY\u堆\u最小\u插槽) 我们通过反复试验微调了应用程序的最小插槽大小和增量,以获得最佳性能(我们有足够多的机器来了解不同的值如何影响malloc调用和完整gc的数量) 但有件事困扰了我一段时间:1个插槽的字节有多大?1.9中的默认值是8K (搜索堆大小) 请注意,每当它耗尽空间并需要重新分配时,在1.9中,它会以指数方式分配更多的堆 在1.8中,它将分配越来越大的堆。在通过代码挖掘之后: 1插槽

因此,ruby enterprise文档声明GC设置中的所有值都是在插槽中定义的:

(例如RUBY\u堆\u最小\u插槽)

我们通过反复试验微调了应用程序的最小插槽大小和增量,以获得最佳性能(我们有足够多的机器来了解不同的值如何影响malloc调用和完整gc的数量)


但有件事困扰了我一段时间:1个插槽的字节有多大?

1.9中的默认值是8K

(搜索堆大小)

请注意,每当它耗尽空间并需要重新分配时,在1.9中,它会以指数方式分配更多的堆


在1.8中,它将分配越来越大的堆。

在通过代码挖掘之后:

1插槽的大小为
sizeof(struct RVALUE)
,这取决于机器。

来自Ruby源代码:

$ rvm use ruby-1.9.2-p136
$ gdb ruby
(gdb) p sizeof(RVALUE)
$1 = 40
 *  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

问题是关于1个插槽的大小(即默认的最小堆大小是10000个插槽,1个插槽有多大)gdb是什么?在这个上下文中,
$1=
是什么意思?“40”是什么单位?
p
=
print
$1
是返回值
40是以字节为单位的大小: