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

В чем разница между категориями сборщика мусора

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

Основные категории GC в Python:

  1. Поколение 0 (молодые объекты) — новые объекты, которые еще не пережили сборку мусора.
  2. Поколение 1 (промежуточные объекты) — объекты, пережившие хотя бы одну сборку.
  3. Поколение 2 (старые объекты) — долгоживущие объекты, пережившие несколько сборок.

GC чаще проверяет поколение 0, реже — 1 и 2, т.к. старые объекты с меньшей вероятностью становятся мусором.

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

python
a = []
b = [a]
a.append(b)  # Теперь a и b ссылаются друг на друга
del a, b     # Объекты недоступны, но ссылки остаются

Здесь GC обнаружит и удалит цикл, так как счетчик ссылок не обнулится.

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

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

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

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