Sobes.tech
Back to questions
Middle+
2

Как работает garbage collector в Go? Опишите фазы и алгоритм.

Companies where asked
101ХР101ХР

Answer from AI

sobes.tech AI

В Go используется триггерный, конкурентный, маркирующий и очищающий (mark-and-sweep) сборщик мусора с низкой задержкой.

Основные фазы работы GC:

  1. Mark (маркировка) — сборщик проходит по всем корням (root objects), отмечая объекты, до которых есть достижимость.
  2. Sweep (очистка) — освобождаются объекты, которые не были отмечены как достижимые.

Алгоритм работает параллельно с выполнением программы (concurrent), минимизируя паузы. Go GC использует триггер на основе количества выделенной памяти и времени, чтобы запускать сборку мусора.

Примерно процесс выглядит так:

  • Программа выделяет память.
  • Когда достигается порог, запускается GC.
  • GC параллельно с программой маркирует объекты.
  • После маркировки происходит очистка неиспользуемых объектов.

Это позволяет эффективно управлять памятью с минимальными задержками, что важно для серверных и многопоточных приложений.