我的问题是为什么 python 同时使用引用计数和标记和清除来进行GC?为什么不只是标记和清除?
我最初的猜测是,使用引用计数可以轻松删除非循环引用的对象,这可能会在一定程度上加快标记和清除速度并立即获得内存。不知道我的猜测是否正确?
有什么想法吗?
多谢。
Python(语言)没有说明它使用哪种形式的垃圾收集。主要实现(通常称为 CPython)如您所描述的那样。其他版本(例如 Jython 或 IronPython)使用纯粹的垃圾收集系统。
是的,通过引用计数进行早期收集有一个好处,但 CPython 使用它的主要原因是历史性的。最初没有针对循环对象的垃圾回收,因此循环导致内存泄漏。 C API 和数据结构很大程度上基于引用计数原理。添加真正的垃圾收集后,无法破坏现有的二进制 API 以及依赖它们的所有库,因此必须保留引用计数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)