Python垃圾收集器文档说明

135

我正在寻找详细描述Python垃圾回收机制的文档。

我对每个步骤中做了什么感兴趣。这3个集合中有哪些对象?每个步骤中删除了哪些对象类型?为查找引用循环使用了什么算法?

背景:我正在实现一些需要在短时间内完成的搜索。当垃圾回收器开始收集最老一代时,它比其他情况下要“慢得多”。 它花费的时间比搜索所期望的时间更长。我正在寻找如何预测它何时将回收最老一代以及需要多长时间。

使用 get_count()get_threshold() 可以轻松预测何时将收集最老一代。 这也可以通过 set_threshold() 进行操作。 但我不知道是否更好强制执行 collect() 还是等待计划收集。

1个回答

128

关于Python如何进行垃圾回收并没有权威的资源(除了源代码本身),但是这三个链接应该能给你一个相当好的理解。

更新

事实上,源码是非常有帮助的。你能从中获得多少信息取决于你阅读C语言的能力,但是注释其实非常有帮助。跳到collect()函数,注释很好地解释了过程(尽管用了非常技术性的术语)。


3
CPython不再使用Subversion,转而使用托管在hg.python.org上的Mercurial。由于我无法找到如何链接到该网站上文件的当前版本,因此我将提供一个非官方GitHub镜像的链接。 - Marius Gedminas
1
没关系,我已经想到了如何在官方网站上链接到最新的gcmodule.c文件(http://hg.python.org/cpython/file/tip/Modules/gcmodule.c)。但我仍然认为GitHub更易读。 - Marius Gedminas
学习很多。谢谢。 - gus
1
第一个链接与Python垃圾回收无关,请更新链接。 - Manish Barnwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接