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

Как сборщик мусора (Garbage Collector) определяет, какие объекты удалять

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

  1. Подсчёт ссылок:
    Каждый объект хранит счётчик ссылок. Когда он становится 0, память освобождается.
    python
    a = [1, 2, 3]  # счётчик = 1  
    b = a          # счётчик = 2  
    del b          # счётчик = 1  
    a = None       # счётчик = 0 → удаление  
  1. Циклический сборщик (Generational GC):
    Обходит объекты в трёх поколениях (0, 1, 2). Если объект выживает сборку, он переходит в следующее поколение. Циклы (например, a.ref = b; b.ref = a) обнаруживаются и удаляются.

Нюансы:

  • gc.disable() отключает циклический GC, но не подсчёт ссылок.
  • __del__ может мешать сборке, если создаёт новые ссылки.
  • Weakref (weakref.ref) не увеличивает счётчик ссылок.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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