我很好奇为什么,如果我创建一个列表和一个int并尝试在gc.get_objects()中找到它,我只找到了列表。代码:
import gc
a = 1
b = [1, 2, 3]
for obj in gc.get_objects():
if a is obj:
print('Found: a')
if b is obj:
print('Found: b')
print(a)
仅输出:
发现:b
1
a
中没有gc.get_objects()
,但我当然仍然可以访问它。
答案 0 :(得分:2)
您可以阅读python文档here:
作为一般规则,不跟踪原子类型的实例和非原子类型的实例(容器,用户定义的对象......)。
值得注意的是,情况并非如此。此引文也被添加以避免误导:
但是,可以存在一些特定于类型的优化,以便抑制简单实例的垃圾收集器占用空间