2016-08-16 2 views

ответ

9

Пакет документации runtime содержит все детали, вам нужно:

Переменная GOGC устанавливает начальный целевой процент сбора мусора. Сбор инициируется, когда отношение свежесвязанных данных к живым данным, оставшимся после предыдущего сбора, достигает этого процента. По умолчанию используется GOGC = 100. Настройка GOGC = выключение полностью отключает сборщик мусора. Функция SetGCPercent во время выполнения/отладки позволяет изменить этот процент во время выполнения. См. https://golang.org/pkg/runtime/debug/#SetGCPercent.

Таким образом, вы можете установить переменную окружения GOGC на процент, который является отношением свежесвязанных данных к живым данным, оставшимся после предыдущей коллекции.

Когда вышеуказанное соотношение данных достигает значения GOGC, начинается сборка (мусора). Начальная настройка берется из переменной env GOGC или 100, если переменная не установлена. Значение off отключает сбор мусора.

Во время выполнения вы можете изменить соотношение GOGC по телефону debug.SetGCPercent(), передать отрицательное значение, чтобы отключить его:

debug.SetGCPercent(-1) 

Вы можете запустить сборку мусора «вручную» с runtime.GC().

Полностью отключив GC, возможно, вы не хотите, чтобы вы этого хотели. Прочтите полный пакет документов runtime, где вы найдете подробную информацию о том, как точно настроить GC и как трассировать GC-прогоны. Проанализируйте их и действуйте соответствующим образом.

отметить также, что Go 1.7 был выпущен сегодня с улучшенной сборщик мусора:

программа должна работать немного быстрее из-за ускорения в сборщике мусора и оптимизации в стандартной библиотеке. Программы со многими простаивающими goroutines будут испытывать намного более короткие паузы сбора мусора, чем в Go 1.6.

Если вы этого не сделали, сначала проверьте приложение, скомпилированное с помощью Go 1.7, перед тем, как предпринять какие-либо дальнейшие действия.

Смежные вопросы