Python 使用的主要垃圾回收机制是引用计数和循环引用检测。
- 引用计数:这是 Python 中默认的垃圾回收机制。每当对象被引用时(例如,被分配给变量,或者作为其他对象的成员),其引用计数就会增加。每当对象不再被引用时(例如,变量被重新分配或对象从作用域中删除),其引用计数就会减少。当引用计数减少到0时,该对象就会被垃圾回收。
- 循环引用检测:引用计数主要处理的是基本数据类型和简单的数据结构,如列表和字典等。然而,如果两个对象互相引用,即使它们被其他任何对象所引用,引用计数也不会减少到0,因为它们互相保持了对方的引用计数。为了处理这种情况,Python 引入了一个循环检测器,该检测器通过定期执行一个循环垃圾回收的算法,找出并清除引用计数无法归零的对象。