Рубиновый сборщик мусора - PullRequest
24 голосов
/ 20 мая 2011

Когда бы вы использовали этот метод сбора мусора в ваших программах Ruby?

GC.start

Ответы [ 6 ]

22 голосов
/ 20 мая 2011

Бывают случаи, когда необходимо его запустить, но обычно он работает нормально сам по себе.У меня были ситуации, когда приложение будет пережевать 1 ГБ памяти, если не будет проверено, что приведет к переключению в режим подкачки, при котором запуск GC.start будет прерываться до 100 МБ.

Проблема в том, что вызов этого метода оченьдорого и может значительно замедлить ваше приложение, если используется агрессивно.

16 голосов
/ 17 декабря 2013

Когда бенчмаркинг

Я тестирую некоторый код, который создает много объектов, и я заметил, что мои тесты сильно различаются.Я определил, что пики были из сборки мусора, запущенной во время моего теста .

Управление процессом вручную дает мне более последовательные тесты.

def without_gc
  GC.start # start out clean
  GC.disable
  yield
  GC.enable
end

without_gc do
  Benchmark.measure { some_code }
end

Тем не менее, GC.start приведет к значительному замедлению, если вы запустите его несколько раз.

14 голосов
/ 28 августа 2014

Я использую его, когда перебираю большое количество элементов в средах с ограниченным объемом памяти (Heroku).

7 голосов
/ 20 мая 2011

Обычно не рекомендуется, если у вас нет особых потребностей. Ex. иногда во время анализа памяти полезно использовать gc для лучшей предсказуемости.

0 голосов
/ 09 октября 2018

При загрузке CSV с 100k строк это обязательно. В противном случае серверу не хватает памяти и данные не загружаются. Смотри https://stackoverflow.com/a/52722689/6594668

0 голосов
/ 17 сентября 2017

Пример из реальной жизни:

Когда тестирует JSON-стример Я хочу убедиться, что потребление памяти остается низким.Поэтому мне нужно запустить GC.start перед тестовыми случаями, иначе они станут непредсказуемыми и могут даже давать ложные срабатывания.

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