Когда сборщик мусора удаляет ссылки
Python
Middle
Без компании
Когда сборщик мусора удаляет ссылки
Ответы
В Python сборщик мусора (GC) удаляет объекты, когда на них больше нет ссылок (reference counting). Если счетчик ссылок достигает нуля, память освобождается немедленно.
Для циклических ссылок (когда объекты ссылаются друг на друга, но нет внешних ссылок) используется дополнительный алгоритм (generational GC). Он периодически проверяет такие объекты и удаляет их, если они недостижимы из корневых объектов (глобальных переменных, стека вызовов и т.д.).
Пример циклической ссылки:
```
class Node:
def __init__(self):
self.next = None
a = Node()
b = Node()
a.next = b
b.next = a # Циклическая ссылка
a = b = None # Теперь объекты недостижимы
```
GC обнаружит это в следующем цикле сборки мусора и освободит память. Можно ускорить процесс с помощью `gc.collect()`.