Ruby 1.9中的垃圾收集器调优

The*_*heo 19 ruby garbage-collection

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

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

Mer*_*ian 11

是的,简而言之.

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

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

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

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


The*_*heo 1

不。

\n\n

无法调整 1.9.0\xe2\x80\x931.9.2 GC。但是,您可以使用此补丁编译一个自定义 VM,该 VM 公开与 REE 或多或少相同的调整参数。

\n