sha*_*awn 20 python garbage-collection
我的问题是为什么python使用引用计数和gc的标记和扫描?为什么不只是标记和扫描?
我最初的猜测是,使用引用计数可以轻松删除非循环引用的对象,这可能会加速标记和扫描并立即获得内存.不知道我的猜测是否正确?
有什么想法吗?
非常感谢.
Dun*_*can 19
Python(该语言)没有说它使用哪种形式的垃圾收集.主要实现(通常称为CPython)就像您描述的那样.其他版本如Jython或IronPython使用纯垃圾收集系统.
是的,早期收集有一个好处,参考计数,但CPython使用它的主要原因是历史.最初没有循环对象的垃圾收集,因此循环导致内存泄漏.C API和数据结构主要基于引用计数原理.当添加真正的垃圾收集时,不能打破现有的二进制API和依赖它们的所有库,因此必须保留引用计数.