Какие знаешь механизмы в Garbage Collector
В Python используется автоматическое управление памятью с помощью подсчёта ссылок и циклического сборщика мусора (Generational GC).
1. Подсчёт ссылок
Каждый объект хранит счётчик ссылок. При создании объекта счётчик = 1. При новой ссылке — увеличивается, при удалении — уменьшается. Когда счётчик достигает 0, память освобождается.
2. Generational GC
Для обнаружения циклических ссылок (когда объекты ссылаются друг на друга, но внешних ссылок нет) используется generational GC. Объекты делятся на 3 поколения (0, 1, 2). Новые объекты попадают в поколение 0. Если они выживают после сборки, переходят в следующее поколение.
Пример циклической ссылки:
a = []
b = [a]
a.append(b) # Теперь a и b ссылаются друг на друга
del a, b # Внешних ссылок нет, но подсчёт ссылок не поможетGenerational GC найдёт и удалит такие объекты.
Вызов GC вручную:
import gc
gc.collect() # Принудительная сборка мусора
офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру