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

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

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

  1. Подсчёт ссылок: Каждый объект имеет счётчик ссылок. При удалении ссылки счётчик уменьшается. Когда он достигает 0, память освобождается.
  2. Циклические ссылки: Если два объекта ссылаются друг на друга, их счётчики никогда не станут 0.
  3. Generational GC: Python периодически запускает сборщик мусора, который обнаруживает недостижимые циклы (например, объекты, не связанные с корневыми ссылками).

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

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

a = Node()
b = Node()
a.ref = b  # Создаём циклическую ссылку
b.ref = a
del a, b   # Теперь объекты недостижимы, но ссылки остались

GC обнаружит и удалит такие объекты при следующем проходе.

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

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

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

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