首页 > 解决方案 > gc.collect() 函数究竟做了什么?

问题描述

我无法理解 python 函数到底是做什么的gc.collect()。该函数是否仅收集那些可收集的对象,以便在达到之后释放空间gc.threshold?还是gc.collect()收集对象并自动摆脱它收集的任何东西,以便在执行代码后立即释放空间?

标签: pythongarbage-collection

解决方案


这取决于!如果在没有参数或generation=2作为参数的情况下调用,它将释放可收集的对象。如果调用generation=1它不会清除空闲列表。

文档中:

没有参数,运行一个完整的集合。可选参数 generation 可以是一个整数,指定要收集哪一代(从 0 到 2)。ValueError如果代号无效,则引发A。返回找到的不可达对象的数量。

每当运行完整集合或最高代 (2) 的集合时,都会清除为许多内置类型维护的空闲列表。由于特定的实现,特别是浮动,并非某些空闲列表中的所有项目都可能被释放。


推荐阅读