Выбор ответа Middle Память, GC и pprof спрашивают часто обновлено

Какой сборщик мусора в Go

Вопрос

Какое описание сборщика мусора Go верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Конкурентный трёхцветный mark-and-sweep без перемещения и поколений. Go маркирует живые объекты параллельно с работой программы, а паузы нужны только на включение и завершение маркировки.

Варианты ответа

  1. Поколенческий копирующий сборщик с молодым и старым поколением, как в JVM
  2. Конкурентный трёхцветный mark-and-sweep без перемещения и поколенийправильный ответ
  3. Подсчёт ссылок с периодическим поиском циклов, как в CPython
  4. Сборка только при явном вызове runtime.GC() из кода

Разбор

Go маркирует живые объекты параллельно с работой программы, а паузы нужны только на включение и завершение маркировки. Объекты не перемещаются (поэтому указатели стабильны и cgo проще), поколений нет: ставка на escape analysis, который оставляет много короткоживущих объектов на стеке. Подсчёта ссылок нет. Сборка запускается автоматически по GOGC и GOMEMLIMIT, runtime.GC() нужен редко.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.