Вопрос проверяет знание работы памяти в Go, устройства GC и оптимизаций, которые делают его эффективным.
Сборщик мусора в Go работает по схеме concurrent mark-and-sweep. Раньше при сборке выполнение программы останавливалось («stop the world»), но теперь паузы очень короткие и почти незаметные.
Как работает GC в Go:
Фаза mark — ищет объекты, до которых можно «дойти» из корней.
Sweep — освобождает неиспользуемую память.
Работает параллельно с приложением.
Stop-the-world: на время некоторых фаз GC останавливает горутины. В старых версиях Go это были миллисекунды и больше, теперь это обычно десятки микросекунд.
Пример (включение логов GC):
GODEBUG=gctrace=1 go run main.go
Вывод: GC в Go быстрый и почти незаметный, но при высоких требованиях к latency лучше уменьшать количество аллокаций.