我知道关于GC.enable/disable
,但是有什么方法可以控制 Ruby1.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 #- 每次分配后新的内存板比之前的大 X 倍。
- RUBY_HEAP_SLOTS_INCREMENT = 1 # 老实说,不确定:)
有关 GC 的更多详细信息,可能会有所帮助 http://timetobleed.com/garbage-collection-slides-from-la-ruby-conference/
一个故事来自 http://37signals.com/svn/posts/2742-the-road-to-faster-tests37signals 伙计们,这绝对可以帮助你。他们按时使用手动 GC 调用(GC.start),而不是内存大小,并获得了巨大的提升。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)