python中的引用循环是什么?

问题描述

我查看了 python 的官方文档,但我似乎找不到参考循环是什么.任何人都可以澄清它对我来说是什么,因为我正在尝试理解 GC 模块.提前感谢您的回复.

I have looked in the official documentation for python, but i cannot seem to find what a reference cycle is. Could anyone please clarify what it is for me, as i am trying to understand the GC module. Thank you in advance for your replies.


解决方案

引用循环仅仅意味着一个或多个对象相互引用,这样如果你在纸上用箭头表示依赖关系,你会看到一个循环.

A reference cycle simply means one or more objects referencing each other, such that if you drew it out on paper with arrows representing the dependencies you would see a cycle.

(几乎)最简单的引用循环是有两个对象 ab 相互引用:

The (almost) simplest reference cycle is having two objects a and b that refer to each other:

a.other = b
b.some_attr = a

天真的垃圾收集器严格按照一个对象是否被另一个对象引用来工作.在这种情况下,如果 ab 都没有被其他任何东西引用,它们仍然会相互引用,并且天真的垃圾收集器可能不会回收内存.(不过,我不知道 Python 是否可以被引用循环捕获.)

Naive garbage collectors work strictly off of whether or not an object is referenced by another object. In this case, if both a and b are not referred to by anything else, they still refer to each other and a naive garbage collector may not reclaim the memory. (I don't know if Python can be trapped by reference cycles or not, though.)

最简单的引用循环是引用自身的对象:

The simplest reference cycle is an object that refers to itself:

a = []
a.append(a)

相关文章