Сборщик мусора в Go использует concurrent tri-color mark-and-sweep: маркировка достижимых объектов идёт конкурентно с выполнением программы, паузы (stop-the-world) короткие - обычно менее 1 мс.
Корни (глобальные переменные, стек) маркируются, затем обход по указателям. В конце не достигнутые белые объекты считаются мусором и освобождаются. Настройки: GOGC (целевое соотношение heap к живым данным, по умолчанию 100).