gc.collect()函数到底是做什么的?

7

我不太清楚 gc.collect() 函数具体是做什么的。 该函数是否仅收集可回收对象,以便在稍后达到 gc.threshold 时释放空间?还是 gc.collect() 会收集对象并自动清除其所收集的所有内容,以便在执行代码后立即释放空间。

1个回答

4
取决于情况!如果没有参数调用或以generation=2作为参数调用,则会释放可回收的对象。如果使用generation=1进行调用,则不会清除自由列表。
文档中可以看到:
“不带参数运行完整收集。可选参数生成可能是指定要收集的代数(从0到2的整数)。如果代数号码无效,则引发ValueError。返回找到的不可达对象数。
一些内置类型维护的空闲列表在运行完整收集或最高代(2)的收集时被清除。由于特定实现,某些自由列表中的所有项目可能都不会被释放,特别是浮点数。”

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