Какой нюанс работы GC

«Какой нюанс работы GC» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основной нюанс GC в Go — недетерминированность срабатывания. Сборщик мусора работает автоматически, но точное время вызова нельзя предсказать. Это может вызывать неожиданные паузы (STW — stop-the-world) в работе программы, особенно при работе с большими объемами данных.

Пример:

func main() {
    var m map[int]string
    for i := 0; i < 1e6; i++ {
        m = make(map[int]string) // создаем мусор
    }
    runtime.GC() // принудительный вызов GC (не рекомендуется в продакшене)
}

Важно:

  • GC использует триколорную маркировку и параллельную сборку
  • Настройки GOGC (по умолчанию 100%) позволяют управлять частотой сборки
  • Лучше минимизировать аллокации в горячих путях