【发布时间】:2015-11-04 16:33:21
【问题描述】:
我正在尝试调试为什么我的一个对象没有被垃圾收集,并且我在尝试查看文档/以前的问题时遇到了几个问题:
1) 如果我的对象没有参与任何引用循环,我认为垃圾收集不涉及,并且 Python 在对象的引用计数降至 0 时简单地释放内存是对的吗?
2)当这样一个简单对象的引用计数达到0时,是否立即释放内存,如果没有,有没有办法强制释放?
3) Python 是否使用 sys.getrefcount(obj) 来跟踪引用计数?
4) 为什么下面的代码 sn-p 没有将引用者的数量从 1 增加到 2(两次都打印 1)?
import gc
a = []
print(len(gc.get_referrers(a))
b = a
print(len(gc.get_referrers(a))
【问题讨论】: