垃圾收集器删除一个int但保存一个列表

时间:2018-01-25 18:58:40

标签: python garbage-collection

我很好奇为什么,如果我创建一个列表和一个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(),但我当然仍然可以访问它。

1 个答案:

答案 0 :(得分:2)

您可以阅读python文档here

  

作为一般规则,不跟踪原子类型的实例和非原子类型的实例(容器,用户定义的对象......)。

值得注意的是,情况并非如此。此引文也被添加以避免误导:

  

但是,可以存在一些特定于类型的优化,以便抑制简单实例的垃圾收集器占用空间