Выбор ответа Middle Память, GC и pprof обновлено
Что значит GOGC=100
Вопрос
Что означает значение по умолчанию GOGC=100?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Цикл GC стартует, когда куча выросла на 100% от живой. GOGC задаёт целевой рост кучи между сборками в процентах: при 100 и 50 МБ живых данных следующий цикл начнётся около 100 МБ.
Варианты ответа
- GC запускается по таймеру каждые 100 мс работы программы
- GC может занимать не больше 100% одного ядра процессора
- Цикл GC стартует, когда куча выросла на 100% от живойправильный ответ
- Куча ограничена 100 МБ, дальше аллокации ждут сборки
Разбор
GOGC задаёт целевой рост кучи между сборками в процентах: при 100 и 50 МБ живых данных следующий цикл начнётся около 100 МБ. С Go 1.18 в расчёт входят также стеки горутин и глобальные переменные. GOGC=200 делает сборки реже ценой памяти, GOGC=off отключает их. Временного интервала и жёсткого лимита GOGC не задаёт, лимит это GOMEMLIMIT. Нагрузку GC на CPU целится держать около 25% в фазе маркировки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память, GC и pprof»
- Пул объектов как sync.Pool: симуляция на Go
- Статистика потока чисел без хранения на Go
- Escape analysis: что попадёт в кучу
- Как работает сборщик мусора Go
- Какой сборщик мусора в Go
- inuse_space и alloc_space в pprof
- Почему fmt.Println вызывает аллокации
- Инструменты диагностики Go