Ruby 1.9中的垃圾收集器调优

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

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

是的,简而言之。

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

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

关于GC的更多细节可能会有所帮助

一个来自 37signals人的故事 ,可能明确地帮助你。 他们按时使用手动GC调用(GC.start),而不是内存大小,并获得巨大的提升。

没有。

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