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

Как работает очистка поколений в сборщике мусора (Garbage collector)

В Python используется generational garbage collector с тремя поколениями (0, 1, 2). Новые объекты попадают в поколение 0. Принцип работы:

  1. Когда поколение 0 заполняется, запускается сборка мусора только в нём
  2. Выжившие объекты перемещаются в поколение 1
  3. Если сборка поколения 1 происходит слишком часто, объекты перемещаются в поколение 2
  4. Сборка в старших поколениях происходит реже

Пример работы:

python
import gc

# Отключаем автоматический сборщик
gc.disable()

# Создаем циклическую ссылку
x = []
x.append(x)

# Вручную запускаем сборщик для поколения 0
collected = gc.collect(0)
print(f"Собрано объектов: {collected}")  # 0 - циклическая ссылка еще не обнаружена

# Запускаем полную сборку
collected = gc.collect()
print(f"Собрано объектов: {collected}")  # 1 - циклическая ссылка удалена

Ключевые моменты:

  • Молодые объекты проверяются чаще
  • Циклические ссылки обнаруживаются и удаляются
  • Позволяет оптимизировать производительность
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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