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

Как решается кольцевая зависимость в сборщике мусора (Garbage collector)

В Python используется алгоритм подсчёта ссылок (reference counting) для управления памятью, но он не может обнаружить циклические ссылки. Для этого применяется дополнительный сборщик мусора (gc module), который использует алгоритм mark-and-sweep:

  1. Mark: Обходит все объекты, помечая достижимые (те, на которые есть ссылки из корневых объектов)
  2. Sweep: Удаляет все непомеченные объекты (циклические ссылки без внешних связей)

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

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

a = Node()
b = Node()
a.ref = b
b.ref = a  # Циклическая ссылка

Как решить:

  1. Вручную разорвать ссылки (a.ref = None)
  2. Использовать weakref для слабых ссылок
  3. Положить на сборщик мусора (gc.collect())
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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