Python(语言)没有说明它使用哪种形式的垃圾收集。您描述的主要实现(通常称为cpython)。其他版本,例如Jython或IronPython,则使用纯垃圾收集系统。
是的,使用引用计数进行早期收集是有好处的,但是cpython使用它的主要原因是历史性的。最初,没有针对循环对象的垃圾回收,因此循环导致内存泄漏。C API和数据结构很大程度上基于引用计数的原理。添加真正的垃圾收集时,不能选择破坏现有的二进制API和所有依赖于它们的库,因此必须保留引用计数。
为什么python为什么同时为gc使用引用计数和标记和清除?
Python(语言)没有说明它使用哪种形式的垃圾收集。您描述的主要实现(通常称为cpython)。其他版本,例如Jython或IronPython,则使用纯垃圾收集系统。
是的,使用引用计数进行早期收集是有好处的,但是cpython使用它的主要原因是历史性的。最初,没有针对循环对象的垃圾回收,因此循环导致内存泄漏。C API和数据结构很大程度上基于引用计数的原理。添加真正的垃圾收集时,不能选择破坏现有的二进制API和所有依赖于它们的库,因此必须保留引用计数。