![]() |
1
1
对: http://docs.python.org/library/weakref.html 弱引用不会使对象保持活动状态。 get_referers()函数将只定位那些支持垃圾收集的容器;将找不到引用其他对象但不支持垃圾收集的扩展类型。 是什么让你认为这个物体没有被收集?另外,您尝试过gc.collect()吗? |
![]() |
2
1
也可能是一个引用被错误的C扩展泄露了,imho您将看不到引用者,但引用计数仍然不会下降到0。您可能需要检查的返回值
|
![]() |
3
1
我很高兴你发现了你的问题,与最初的问题无关。尽管如此,我对子孙后代的答案有不同的看法,以防其他人有问题。 对象没有引用者,但未被垃圾收集是合法的。 在python 2.7手册中:“允许一个实现推迟垃圾收集或完全忽略垃圾收集。”只要没有收集到仍然可以访问的对象,那么如何实现垃圾收集就关系到实现质量。 禁止垃圾收集器是合法的。 关于代和引用计数垃圾收集器的讨论涉及特定的cpython实现(如问题中所标记的那样)。 |
![]() |
4
0
AS Christopher says 弱引用不计入对象refcount,因此无法阻止python删除对象。
但是,python的垃圾收集器不会删除循环引用中并且具有
|
![]() |
5
0
如果您确实有对该对象的强引用,请使用gc.get-referers(obj)来查找它。 如果您有泄漏,不知道泄漏的是什么,这会有所帮助: http://mg.pov.lt/objgraph.py http://mg.pov.lt/blog/hunting-python-memleaks http://mg.pov.lt/blog/python-object-graphs.html 它是inspect模块的一个薄包装器;如果您难以跟踪不需要的引用,它可以帮助很多。不过,为了跟踪一个引用,gc.get-referers可能是您所需要的。 |
![]() |
codeforester · 测量GC暂停时间的最佳方法是什么? 7 年前 |
![]() |
Venki WAR · 需要解释G1的并行完整GC 7 年前 |
![]() |
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 7 年前 |
![]() |
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 7 年前 |
![]() |
goks · 如何清除熊猫的数据帧内存? 7 年前 |