我知道GC.enable/disable
,但是否有更详细的方法来控制Ruby 1.9垃圾收集器?
在对我的代码进行性能分析时(使用perftools.rb),我注意到GC占据了总样本的高达30%,我想看看是否可能调整GC以减少此数字。是否有任何环境变量或其他方式可以设置堆插槽数量、malloc限制等,就像使用REE一样?
我知道GC.enable/disable
,但是否有更详细的方法来控制Ruby 1.9垃圾收集器?
在对我的代码进行性能分析时(使用perftools.rb),我注意到GC占据了总样本的高达30%,我想看看是否可能调整GC以减少此数字。是否有任何环境变量或其他方式可以设置堆插槽数量、malloc限制等,就像使用REE一样?
没错,就是这个意思。
首先,以下是定义GC行为的基本常量(默认值如下):
来自 37signals 团队的一篇文章,可能会对你有很大帮助。他们在适当的时候使用手动GC调用(GC.start),而不是根据内存大小来进行,从而获得了巨大的提升。
不行。
无法调整1.9.0-1.9.2的垃圾回收。但是,您可以编译自定义虚拟机,使用this patch公开与REE几乎相同的调整参数。