垃圾回收器设计

摘要

CPython 使用的主要垃圾回收算法是引用计数。基本思想是 CPython 统计有多少不同的地方引用了一个对象。这样的地方可以是另一个对象,或者一个全局(或静态)C 变量,或者某个 C 函数中的局部变量。当一个对象的引用计数变为零时,该对象将被释放。如果它包含对其他对象的引用,则这些对象的引用计数将递减。这些其他对象也可能被释放,如果这种递减使它们的引用计数变为零,依此类推。可以使用

>>> x = object()
>>> sys.getrefcount(x)
2
>>> y = x
>>> sys.getrefcount(x)
3
>>> del y
>>> sys.getrefcount(x)
2