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

Может ли сборщик мусора (Garbage collector) удалить нужные объекты в Python

В Python сборщик мусора (GC) использует подсчёт ссылок и циклический сборщик для управления памятью. Обычно он не удаляет нужные объекты, так как объект удаляется только когда количество ссылок на него становится нулевым. Однако есть нюансы:

  1. Циклические ссылки — GC может корректно удалить объекты, участвующие в циклах, если они недостижимы извне.
  2. Слабые ссылки (weakref) — если объект удерживается только слабой ссылкой, GC может его удалить.
  3. __del__ и неожиданное поведение — если в __del__ есть сложная логика, это может помешать сборке мусора.

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

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
интервью вопросы и ответы