Garbage collector tuning in Ruby 1.9

做~自己de王妃 提交于 2019-12-31 12:14:11

问题


I know about GC.enable/disable, but is there any way of controlling the Ruby 1.9 garbage collector in more detail?

When profiling my code (using perftools.rb) I notice that the GC stands for up to 30% of the total samples, and I'd like to see if it's possible to tune the GC to decrease this number. Are there any environment variables or other means by which you can set the number of heap slots, the malloc limit, etc. like you can with REE?


回答1:


Yep, for short.

At first, basic constants, defining GC behavior (defaults value are shown) :

  • RUBY_GC_MALLOC_LIMIT = 8000000 # - Initial size of a new memory slab, which is allocated after consuming all available memory
  • RUBY_HEAP_MIN_SLOTS = 10000 #- Initial memory size, allocated at startup
  • RUBY_HEAP_SLOTS_GROWTH_FACTOR = 1,8 #- New slab of memory is X times bigger than previous after each allocation.
  • RUBY_HEAP_SLOTS_INCREMENT = 1 # Not sure, honestly :)

More details about GC, may help

A story from 37signals guys, which may definitively help you. They used manual GC calls (GC.start) on time, instead of memory size, and got huge boost.




回答2:


No.

There is no way to tune the 1.9.0–1.9.2 GC. However, you can compile a custom VM that exposes more or less the same tuning parameters as REE with this patch.



来源:https://stackoverflow.com/questions/4985310/garbage-collector-tuning-in-ruby-1-9

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!