Как GC понимает, к какому объекту применить какой алгоритм сборки мусора?

В CPython подсчёт ссылок дополняется сборщиком циклов для отслеживаемых объектов-контейнеров. GC не выбирает произвольный алгоритм по имени класса: используется протокол типа и служебные метаданные.

Короткий ответ

Что ответить на собеседовании

В CPython подсчёт ссылок дополняется сборщиком циклов для отслеживаемых объектов-контейнеров. GC не выбирает произвольный алгоритм по имени класса: используется протокол типа и служебные метаданные.

Подробный разбор

Ответ с пояснениями

В CPython подсчёт ссылок дополняется сборщиком циклов для отслеживаемых объектов-контейнеров. GC не выбирает произвольный алгоритм по имени класса: используется протокол типа и служебные метаданные.

Типы, поддерживающие циклический GC, предоставляют обход ссылок через tp_traverse; изменяемым контейнерам нужен tp_clear. Флаг Py_TPFLAGS_HAVE_GC и состояние отслеживания позволяют определить участие объекта в таком обходе. Некоторые контейнеры могут временно не отслеживаться. Поколения и детали подсчёта ссылок зависят от версии и сборки CPython; в других VM устройство GC отличается.

Источник: docs.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее