首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby 2.0中的垃圾收集器调优

Ruby 2.0中的垃圾收集器调优
EN

Stack Overflow用户
提问于 2013-04-30 20:02:02
回答 2查看 8.9K关注 0票数 33

我想知道ruby 1.9.x使用的GC调优在2.0中是否仍然与GC的新实现相关。如果是这样的话,有没有什么新的东西我们可以在新版本上配置?

我说的是以下设置

代码语言:javascript
复制
RUBY_HEAP_MIN_SLOTS=600000 
RUBY_GC_MALLOC_LIMIT=59000000
RUBY_HEAP_FREE_MIN=100000
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-30 23:54:59

关于这些GC调优参数有相当多的混淆。REE (它是Ruby1.8.7的一个分支) introduced its own parameters first,以及后来的Ruby (从1.9.2开始)引入了自己的(类似的)参数。Ruby 1.9.3使它们可以通过环境变量进行自定义,Ruby 2.1.0则添加了更多内容。

This blog post详细介绍了核磁共振成像中的垃圾收集以及所有调优变量的含义。

下面是每个Ruby版本的所有调优变量的完整列表:

REE

  • RUBY_HEAP_MIN_SLOTS
  • RUBY_HEAP_SLOTS_INCREMENT
  • RUBY_HEAP_SLOTS_GROWTH_FACTOR
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_FREE_MIN

Ruby 1.9.2

(硬编码,但可通过this patch的环境变量进行自定义)

  • GC_MALLOC_LIMIT
  • HEAP_MIN_SLOTS
  • FREE_MIN

Ruby 1.9.3

  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_MIN_SLOTS
  • RUBY_FREE_MIN

Ruby 2.0.0

与Ruby 1.9.3相同

Ruby 2.1.0

  • RUBY_GC_HEAP_INIT_SLOTS (废弃RUBY_HEAP_MIN_SLOTS)
  • RUBY_GC_HEAP_FREE_SLOTS )(废弃RUBY_FREE_MIN)
  • RUBY_GC_HEAP_GROWTH_FACTOR (new)
  • RUBY_GC_HEAP_GROWTH_MAX_SLOTS (new)
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_GC_MALLOC_LIMIT_MAX (new)
  • RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR (new)
  • RUBY_GC_OLDMALLOC_LIMIT (new)
  • RUBY_GC_OLDMALLOC_LIMIT_MAX (new)
  • RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR (新)

Ruby 2.1.1

  • RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR (新)
票数 51
EN

Stack Overflow用户

发布于 2014-02-25 09:51:26

来自Ruby2.1.x http://tmm1.net/ruby21-rgengc/

代码语言:javascript
复制
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

或者这个

代码语言:javascript
复制
# 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

Performance MRI Ruby Patch

代码语言:javascript
复制
$ rvm install 2.1.2 --patch railsexpress -n railsexpress
$ rvm --default use 2.1.2-railsexpress
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16299419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档