Расскажи про Garbage Collector в Python — как он работает?
Answer from AI
sobes.tech AI
В Python управление памятью основано на подсчёте ссылок (reference counting) и дополнительном сборщике мусора для циклических ссылок.
Основные моменты:
-
Подсчёт ссылок: Каждый объект в Python хранит счётчик ссылок — количество активных ссылок на него. Когда счётчик падает до нуля, объект сразу удаляется и память освобождается.
-
Проблема циклических ссылок: Если объекты ссылаются друг на друга, но не используются, подсчёт ссылок не сможет их удалить, так как счётчики не равны нулю.
-
Сборщик мусора (GC): Для решения проблемы циклов используется модуль
gc, который периодически ищет циклы объектов, недоступных из программы, и удаляет их. -
Как работает GC: Он делит объекты на поколения (generation 0, 1, 2) и чаще проверяет молодые объекты. Это оптимизирует производительность.
Пример вызова сборщика вручную:
import gc
# Вызвать сборщик мусора
collected = gc.collect()
print(f"Собрано объектов: {collected}")
Таким образом, Python сочетает быстрый подсчёт ссылок с периодическим поиском циклических ссылок для эффективного управления памятью.