Тюнинг сборщика мусора в Ruby 1.9 - PullRequest
19 голосов
/ 13 февраля 2011

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

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

Ответы [ 2 ]

11 голосов
/ 19 февраля 2011

Да, для краткости.

Сначала базовые константы, определяющие поведение 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) вовремя вместо объема памяти и получили огромный импульс.

1 голос
/ 14 марта 2011

номер

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...