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

Какие механизмы garbage collection знаешь

В Python используется автоматический garbage collection с подсчётом ссылок (reference counting) и циклический сборщик мусора (generation GC).

  1. Reference Counting
    Каждый объект имеет счётчик ссылок. При создании ссылки счётчик увеличивается, при удалении — уменьшается. Когда счётчик достигает нуля, память освобождается.
python
a = []  # счетчик = 1
b = a   # счетчик = 2
del b   # счетчик = 1
  1. Generational GC
    Объекты делятся на 3 поколения (0, 1, 2). Новые объекты попадают в поколение 0. Если объект переживает сборку мусора, он переходит в следующее поколение. Сборщик чаще проверяет молодые поколения.

    python
    import gc
    gc.collect()  # принудительный запуск GC
  2. Циклические ссылки
    Reference counting не может их обработать, поэтому Generational GC ищет недостижимые циклы и удаляет их.

    python
    x = []
    x.append(x)  # циклическая ссылка
    del x        # GC удалит объект
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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