Подтвердить что ты не робот

Сборщик мусора в Ruby 1.9

Я знаю о GC.enable/disable, но есть ли способ управления сборщиком мусора Ruby 1.9 более подробно?

При профилировании моего кода (используя perftools.rb) я замечаю, что GC составляет до 30% от общего количества выборок, и я хотел бы посмотреть, можно ли настроить GC для уменьшения этого числа. Существуют ли какие-либо переменные среды или другие средства, с помощью которых вы можете установить количество слотов кучи, предел malloc и т.д., Как вы можете с помощью REE?

4b9b3361

Ответ 1

Нет.

Невозможно настроить GC 1.9.0-1.9.2. Однако вы можете скомпилировать пользовательскую виртуальную машину, которая предоставляет более или менее те же параметры настройки, что и REE, с этот патч.

Ответ 2

Да, короче.

Сначала показаны основные константы, определяющие поведение 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, может помочь

История из 37signals ребята, которые могут окончательно помочь вам. Они использовали ручные вызовы GC (GC.start) по времени, а не размер памяти, и получили огромный импульс.