我想知道在Ruby 2.0的新GC实现中,是否仍然需要使用1.9.x的GC调优。如果是这样,那么在新版本中是否有任何新的配置选项可以设置?
我说的是以下设置:
RUBY_HEAP_MIN_SLOTS=600000
RUBY_GC_MALLOC_LIMIT=59000000
RUBY_HEAP_FREE_MIN=100000
我想知道在Ruby 2.0的新GC实现中,是否仍然需要使用1.9.x的GC调优。如果是这样,那么在新版本中是否有任何新的配置选项可以设置?
我说的是以下设置:
RUBY_HEAP_MIN_SLOTS=600000
RUBY_GC_MALLOC_LIMIT=59000000
RUBY_HEAP_FREE_MIN=100000
Ruby 1.9.3 源代码
Ruby 2.0.0 源代码
与Ruby 1.9.3相同
Ruby 2.1.0 源代码
Ruby 2.1.1 源代码
从 Ruby 2.1.x 开始使用RGenGC 垃圾回收机制
export RUBY_GC_HEAP_INIT_SLOTS=600000
export RUBY_GC_HEAP_FREE_SLOTS=600000
export RUBY_GC_HEAP_GROWTH_FACTOR=1.25
export RUBY_GC_HEAP_GROWTH_MAX_SLOTS=300000
或者这个
# Boost Ruby
export RUBY_GC_HEAP_INIT_SLOTS=1000000 # 1M
export RUBY_GC_HEAP_FREE_SLOTS=500000 # 0.5M
export RUBY_GC_HEAP_GROWTH_FACTOR=1.1
export RUBY_GC_HEAP_GROWTH_MAX_SLOTS=10000000 # 10M
export RUBY_GC_MALLOC_LIMIT_MAX=1000000000 # 1G
export RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR=1.1
# export RUBY_GC_OLDMALLOC_LIMIT=500000000 # 500M
# export RUBY_GC_OLDMALLOC_LIMIT_MAX=1000000000 # 1G
# export RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR=1.1
$ rvm install 2.1.2 --patch railsexpress -n railsexpress
$ rvm --default use 2.1.2-railsexpress
RUBY_GC_HEAP_INIT_SLOTS
和RUBY_GC_HEAP_FREE_SLOTS
表示的是绝对数量,而不是字节。 - Agis