> Что такое достижимая и недостижимая ссылка в сборщике мусора (Go)
Уровень: junior · Роль: backend · Категория: Технические вопросы
Компании: ЛеруаМерлен, Одноклассники
Стек: Go
> Пример ответа
В контексте сборки мусора (GC) в Go ссылка называется достижимой (reachable), если до объекта, на который она указывает, можно добраться, следуя по цепочке ссылок из корневых (root) элементов программы. Корнями обычно являются глобальные переменные, стековые переменные активных горутин и регистры процессора. Пока объект достижим, сборщик мусора не может его удалить, так как программа может его использовать.
Недостижимая (unreachable) ссылка - это ссылка, которая указывает на объект, к которому нет путей от корней. Такой объект считается мусором и будет собран GC. Например, если на объект больше не ссылается ни одна переменная, или все ссылки на него были перезаписаны, он становится недостижимым.
В Go сборщик мусора использует алгоритм "mark-and-sweep" с параллельной маркировкой: он обходит граф объектов от корней, помечая достижимые, а затем удаляет непомеченные (недостижимые). Важно понимать, что наличие циклических ссылок не мешает сборке: если цикл изолирован от корней, все объекты в нём считаются недостижимыми.
> Похожие задачи по backend
Как организовать обработку успешных и неуспешных сетевых запросов
Что такое garbage collector и как он работает
В чем разница между сравнением по ссылке и по значению
Как работает Garbage Collector и что такое минорная сборка мусора
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью