Как работает сборщик мусора (Garbage Collector) в Python

Python Senior Без компании
Как работает сборщик мусора (Garbage Collector) в Python
Ответы
В Python используется алгоритм подсчёта ссылок (reference counting) + generational garbage collection для обнаружения циклических ссылок. **Reference counting:** - Каждый объект хранит счётчик ссылок на него - При создании объекта счетчик = 1 - При добавлении новой ссылки счетчик увеличивается - При удалении ссылки - уменьшается - Когда счетчик достигает 0, память освобождается Пример: ``` a = [1, 2, 3] # refcount = 1 b = a # refcount = 2 del a # refcount = 1 b = None # refcount = 0 -> память освобождена ``` **Generational GC:** - Обнаруживает циклические ссылки (когда refcount никогда не станет 0) - Работает в 3 поколениях (0 - новые объекты, 2 - старые) - Чаще проверяет молодые объекты - Использует алгоритм mark-and-sweep GC можно контролировать через модуль `gc`: ``` import gc gc.disable() # отключить сборщик gc.collect() # принудительный сбор ```