Sobes.tech
Back to questions
Senior
2

Как работает Garbage Collector в Go?

Companies where asked
Prediva

Answer from AI

sobes.tech AI

Garbage Collector (GC) в Go — это автоматический механизм управления памятью, который освобождает неиспользуемые объекты, чтобы предотвратить утечки памяти.

Основные особенности GC в Go:

  • Трёхфазный сбор:

    1. Mark (отметка): GC просматривает все корневые объекты (стек, глобальные переменные) и отмечает все достижимые объекты.
    2. Sweep (очистка): Все объекты, которые не были отмечены, считаются недостижимыми и освобождаются.
    3. Concurrent (параллельность): GC работает параллельно с выполнением программы, минимизируя паузы.
  • Трассировка достижимости: GC использует алгоритм трассировки, чтобы определить, какие объекты ещё нужны.

  • Паузы минимальны: Go GC оптимизирован для низких задержек, что важно для серверных приложений.

Примерно так работает цикл GC:

1. Программа работает, выделяя память.
2. GC запускается, останавливает горутины на короткое время (stop-the-world).
3. Отмечает все достижимые объекты.
4. Возобновляет работу программы, пока параллельно очищает неиспользуемую память.

Таким образом, разработчику не нужно вручную освобождать память, что снижает количество ошибок, связанных с управлением памятью.