Sobes.tech
Senior
27

Как работает garbage collector в Go?

Companies where asked
Займиго

Answer from AI

sobes.tech AI

Garbage Collector (GC) в Go — это триггерный, конкурентный, маркирующий и очищающий сборщик мусора с алгоритмом mark-and-sweep. Он работает параллельно с основным потоком выполнения, минимизируя паузы в работе программы.

Основные этапы работы GC в Go:

  1. Маркировка (Mark): GC проходит по всем корням (горутина, стеки, глобальные переменные) и отмечает все объекты, до которых можно добраться.
  2. Очистка (Sweep): Все объекты, которые не были отмечены, считаются мусором и освобождаются.

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

Примерно так выглядит упрощённый цикл GC:

// Память выделяется через new или make
p := new(int)
// GC автоматически освободит память, когда p станет недостижимым

В последних версиях Go GC улучшен для работы с многопоточностью и уменьшения фрагментации памяти.