Go использует concurrent tri-color mark-and-sweep GC. Три цвета: белый (не посещён), серый (посещён, но потомки нет), чёрный (посещён вместе с потомками).
GC работает параллельно с программой, STW-паузы минимальны (~100μs-1ms). Фазы: mark setup (STW), concurrent mark, mark termination (STW), concurrent sweep. Write barrier отслеживает изменения указателей во время маркировки.
GOGC контролирует частоту: по умолчанию 100 — GC запускается когда heap вырос на 100% от живых объектов. С Go 1.19 есть GOMEMLIMIT для ограничения памяти.