Основной принцип, лежащий в основе алгоритма трехцветной разметки и очистки, заключается в том, что он делит объекты кучи на три различных набора в соответствии с их цветом (который назначается алгоритмом и может быть черным, серым или белым). Объекты черного набора гарантированно не будут иметь указателей ни на один объект белого. С другой стороны, объект из белого набора может указывать на объект из черного, поскольку это не влияет на работу сборщика мусора. Объекты серого набора могут содержать указатели на некоторые объекты белого. Наконец, объекты белого набора являются кандидатами на сборку мусора.
Работа сборщика мусора в Go основана на алгоритме трех цветов. Обратите внимание, что он не уникален для Go и может использоваться и в других языках программирования.
Атомарная операция — это операция, которая выполняется за один шаг относительно других потоков или, в данном случае, других горутин. Это означает, что атомарную операцию нельзя прервать в середине ее работы