В настоящее время я поддерживаю большое соединение таблицы в базе данных, написанной в golang. Но gc стоит слишком много времени. Я хочу закрыть go gc и запустить его вручную. Как настроить go build args?Как остановить golang gc и запустить его вручную?
ответ
Пакет документации 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, перед тем, как предпринять какие-либо дальнейшие действия.
- 1. Как запустить, остановить и перезапустить кластер вручную в Bluemix Spark?
- 2. Как вручную остановить сервер kestrel
- 3. Как запустить Datagridview.cellValidating вручную?
- 4. Как запустить скрученный в свой поток и остановить его правильно?
- 5. Как остановить и запустить mysql?
- 6. Как остановить и запустить функцию?
- 7. Очередь строится на Дженкинсе. Запустить его вручную
- 8. Как запустить событие «вручную»?
- 9. Как настроить GC, чтобы не остановить мир?
- 10. Соберите метрики GC реального времени - Golang
- 11. Как запустить сервер tomcat вручную
- 12. Как вручную запустить транзакцию OrientGraph?
- 13. Как остановить и запустить jms-прослушиватель
- 14. Spring-Boot, как запустить его вручную в среде сервлетов 3.0
- 15. Как вручную запустить бутстрап «требуется»?
- 16. Как запустить netbeans webapp вручную
- 17. Как остановить и запустить kinect в openkinect?
- 18. Как запустить и остановить несколько таймеров JavaScript?
- 19. Как написать эти golang и ЕГО код
- 20. C# Threading - Как запустить и остановить поток
- 21. Как запустить и остановить приложение в Django
- 22. Остановить и запустить jQuery SlideShow
- 23. Как запустить/остановить принтер?
- 24. Нужно запустить tomcat вручную
- 25. Как запустить jQuery togglePanels вручную
- 26. Как вручную запустить обновление CLLocationManager?
- 27. Как вручную запустить работу Sidekiq
- 28. Buildbot: как вручную запустить сборку?
- 29. Как вручную запустить проверку весны?
- 30. golang идиоматического способа остановить для