我偶尔会遇到一些手动调用 gc.collect()
的代码,但不清楚为什么这样做。如果有的话,手动运行垃圾回收有什么优点,而不是让Python自动处理它呢?
我偶尔会遇到一些手动调用 gc.collect()
的代码,但不清楚为什么这样做。如果有的话,手动运行垃圾回收有什么优点,而不是让Python自动处理它呢?
CPython(你最有可能使用的Python实现)同时支持自动引用计数和垃圾回收。
引用计数会导致大多数内存中的对象在不再需要时立即被释放(没有指向该对象的引用/变量)。
只有当存在循环引用时,垃圾回收才会介入。CPython会定期收集不再被引用的对象“岛屿”。
你很少需要涉及Python内存管理。显式调用gc.collect()
确保立即运行垃圾回收(而不是引用计数)。但你可能不需要这样做,大多数调用gc.collect()
的代码库也不需要。