Встречается на собеседованиях • сегодня
Как сборщик мусора работает с циклическими ссылками
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: помечает достижимые объекты, затем удаляет непомеченные.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы