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。