В CPython подсчёт ссылок дополняется сборщиком циклов для отслеживаемых объектов-контейнеров. GC не выбирает произвольный алгоритм по имени класса: используется протокол типа и служебные метаданные.
Как GC понимает, к какому объекту применить какой алгоритм сборки мусора?
В CPython подсчёт ссылок дополняется сборщиком циклов для отслеживаемых объектов-контейнеров. GC не выбирает произвольный алгоритм по имени класса: используется протокол типа и служебные метаданные.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В CPython подсчёт ссылок дополняется сборщиком циклов для отслеживаемых объектов-контейнеров. GC не выбирает произвольный алгоритм по имени класса: используется протокол типа и служебные метаданные.
Типы, поддерживающие циклический GC, предоставляют обход ссылок через tp_traverse; изменяемым контейнерам нужен tp_clear. Флаг Py_TPFLAGS_HAVE_GC и состояние отслеживания позволяют определить участие объекта в таком обходе. Некоторые контейнеры могут временно не отслеживаться. Поколения и детали подсчёта ссылок зависят от версии и сборки CPython; в других VM устройство GC отличается.
Источник: docs.python.org.