Ruby 1.9中的垃圾收集器调优

时间:2011-02-13 16:25:11

标签: ruby garbage-collection

我知道GC.enable/disable,但有没有更详细的方法来控制Ruby 1.9 垃圾收集器?

在分析我的代码时(使用perftools.rb)我注意到GC代表了总样本的30%,我想看看是否可以调整GC来减少这个数字。是否有任何环境变量或其他方法可以像REE一样设置堆槽数,malloc限制等?

2 个答案:

答案 0 :(得分:11)

是的,简而言之。

首先,定义GC行为的基本常量(显示默认值):

  • RUBY_GC_MALLOC_LIMIT = 8000000# - 新内存块的初始大小,在占用所有可用内存后分配
  • RUBY_HEAP_MIN_SLOTS = 10000# - 启动时分配的初始内存大小
  • RUBY_HEAP_SLOTS_GROWTH_FACTOR = 1,8# - 每次分配后,新的内存块比之前大10倍。
  • RUBY_HEAP_SLOTS_INCREMENT = 1#不确定,老实说:)

More details about GC, may help

A story from 37signals家伙,可能会明确地帮助你。他们按时使用手动GC调用(GC.start),而不是内存大小,并得到了巨大的推动。

答案 1 :(得分:1)

没有

无法调整1.9.0-1.9.2 GC。但是,您可以使用this patch编译与REE公开或多或少相同调整参数的自定义VM。