python - python中的引用循环是什么?

标签 python garbage-collection reference-counting cyclic-reference

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

最佳答案

引用循环仅仅意味着一个或多个对象相互引用,因此如果你在纸上用箭头表示依赖关系将它画出来,你会看到一个循环。

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

a.other = b
b.some_attr = a

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

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

a = []
a.append(a)

关于python - python中的引用循环是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910774/

相关文章:

python - 从 Pandas 的日期列中查找特定日期的日期差异

android - Bitmap、Bitmap.recycle()、WeakReferences 和垃圾回收

未调用 C++ vector 元素构造函数

c++ - 通过组合来实现引用计数可以吗?

java - 对于具有弱 HashMap 的重复数据删除器,正确的实现是什么?

Vala 引用计数和参数传递

python - 让 python 一次验证一个

python - CSS 解析器 + XHTML 生成器,需要建议

python - 如何根据类型对列表中的内容进行多次更改?

javascript - 为什么在对象上创建的间隔在对象引用删除后仍然存在