В языке программирования Go под сборщиком мусора (garbage collector, GC) подразумевается встроенный механизм автоматического управления памятью, который освобождает неиспользуемую память, предотвращая утечки и снижая необходимость вручную управлять выделением и освобождением памяти.
Go использует garbage collector с паузами минимальной продолжительности, что делает его подходящим для высоконагруженных систем и многопоточных приложений. Главная цель сборщика мусора в Go — находить объекты в памяти, к которым больше нет ссылок, и очищать их, чтобы освободить ресурсы.
Работа сборщика мусора включает несколько фаз:
1. Маркировка (mark phase): GC определяет, какие объекты доступны из "корней" — глобальных переменных, стека и т. д. Он обходит граф ссылок и помечает все достижимые объекты.
2. Очистка (sweep phase): после маркировки GC освобождает все недостижимые объекты.
3. Компактирование (в Go не используется): некоторые языки перемещают объекты в памяти для уменьшения фрагментации, но Go этого не делает — он управляет фрагментацией другим способом