Встречается на собеседованиях • сегодня

Как сборщик мусора работает с циклическими ссылками

Python использует алгоритм подсчета ссылок в сочетании с generational garbage collector (GC) для обработки циклических ссылок. Когда объекты ссылаются друг на друга, но нет внешних ссылок, их счетчик ссылок никогда не достигнет нуля. GC выявляет такие изолированные циклы и удаляет их.

Пример циклической ссылки:

python
class Node:
    def __init__(self):
        self.ref = None

a = Node()
b = Node()
a.ref = b
b.ref = a  # Циклическая ссылка
a = b = None  # Теперь объекты изолированы

GC работает в 3 поколениях (0, 1, 2). Новые объекты попадают в поколение 0. Если они выживают сборку мусора, переходят в следующее поколение. Для циклических ссылок используется алгоритм mark-and-sweep: помечает достижимые объекты, затем удаляет непомеченные.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы