Ссылочный цикл просто означает один или несколько объектов, ссылающихся друг на друга, так что если вы нарисовали его на бумаге со стрелками, представляющими зависимости, вы увидите цикл.
(Почти) самый простой ссылочный цикл состоит из двух объектов a
и b
, которые ссылаются друг на друга:
a.other = b
b.some_attr = a
Наивные сборщики мусора работают строго вне зависимости от того, на какой объект ссылается другой объект. В этом случае, если на a
и b
ничего не ссылается, они все равно ссылаются друг на друга, и наивный сборщик мусора может не освободить память. (Однако я не знаю, может ли Python быть захвачен ссылочными циклами.)
РЕДАКТИРОВАТЬ: простейший ссылочный цикл является объектом, который ссылается на себя:
a = []
a.append(a)