Назад к вопросам
101ХР
Middle+
1
Как работает garbage collector в Go? Опишите фазы и алгоритм.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go используется триггерный, конкурентный, маркирующий и очищающий (mark-and-sweep) сборщик мусора с низкой задержкой.
Основные фазы работы GC:
- Mark (маркировка) — сборщик проходит по всем корням (root objects), отмечая объекты, до которых есть достижимость.
- Sweep (очистка) — освобождаются объекты, которые не были отмечены как достижимые.
Алгоритм работает параллельно с выполнением программы (concurrent), минимизируя паузы. Go GC использует триггер на основе количества выделенной памяти и времени, чтобы запускать сборку мусора.
Примерно процесс выглядит так:
- Программа выделяет память.
- Когда достигается порог, запускается GC.
- GC параллельно с программой маркирует объекты.
- После маркировки происходит очистка неиспользуемых объектов.
Это позволяет эффективно управлять памятью с минимальными задержками, что важно для серверных и многопоточных приложений.