Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: garbage, collection

Как Python решает проблему циклических ссылок?

Вопрос проверяет знание механизмов управления памятью и работы сборщика мусора в Python.

Короткий ответ

Python использует не только подсчёт ссылок, но и сборщик мусора. Циклические ссылки не удаляются автоматически счётчиком ссылок. GC периодически ищет группы объектов, недостижимые извне. Такие объекты освобождаются из памяти. Это позволяет избегать утечек памяти

Длинный ответ

Подсчёт ссылок эффективен, но не способен самостоятельно обрабатывать циклы.

Определение

Циклическая ссылка — ситуация, при которой объекты ссылаются друг на друга и не имеют внешних ссылок.

Почему возникает проблема

Перед решением важно понять ограничение:

  1. объект A ссылается на B

  2. объект B ссылается на A

  3. счётчик ссылок обоих > 0

  4. объекты недостижимы извне

Роль сборщика мусора

Python использует дополнительный механизм:

  1. Генерационный GC

    • объекты делятся на поколения

    • молодые объекты проверяются чаще

  2. Поиск недостижимых объектов

    • анализ графа ссылок

    • поиск изолированных циклов

  3. Очистка памяти

    • освобождение объектов

    • вызов финализации при возможности

Пример цикла

a = {}
b = {}
a["b"] = b
b["a"] = a

Без GC такие объекты никогда бы не освободились.

Ограничения

  • объекты с __del__ сложнее очищать

  • очистка может быть отложенной

Вывод

Сборщик мусора дополняет подсчёт ссылок и обеспечивает корректное освобождение памяти при циклических зависимостях.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • Python

    Python

Ключевые слова

#garbage

#collection

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.