Какие механизмы garbage collection знаешь

Python Senior Без компании
Какие механизмы garbage collection знаешь
Ответы
В Python используется автоматический garbage collection с подсчётом ссылок (reference counting) и циклический сборщик мусора (generation GC). - **Reference Counting** Каждый объект имеет счётчик ссылок. При создании ссылки счётчик увеличивается, при удалении — уменьшается. Когда счётчик достигает нуля, память освобождается. ``` a = [] # счетчик = 1 b = a # счетчик = 2 del b # счетчик = 1 ``` - **Generational GC** Объекты делятся на 3 поколения (0, 1, 2). Новые объекты попадают в поколение 0. Если объект переживает сборку мусора, он переходит в следующее поколение. Сборщик чаще проверяет молодые поколения. ``` import gc gc.collect() # принудительный запуск GC ``` - **Циклические ссылки** Reference counting не может их обработать, поэтому Generational GC ищет недостижимые циклы и удаляет их. ``` x = [] x.append(x) # циклическая ссылка del x # GC удалит объект ```