Python垃圾回收主要采用参考计数策略,该策略是由去除和除法恢复补充的。
Python语言采用的垃圾恢复机制是参考计数。原理是:每个对象都维护一个OB_REF字段来记录引用对象的当前次数。当新的参考对象指向对象时,其参考conturs ob_ref plus plus plus plus。1;每当对象的引用无效时,参考计数ob_ref减去1.当对象的参考计数为0时,对象立即被回收,并且对象占据的内存空间将被释放。
获取SYS.GetRefcount()引用的对象的参考计数
结果:
创建了对象
对象引用
作为容器对象的元素
作为参数传递
使用sys.getRefcount()
结果:
该对象已删除
对象的别名分配给其他对象
从一个窗口中删除对象
对象在结束后离开其字段foo(x)功能
窗户对象被破坏
参考计数方法具有明显的优势,例如高效,简单逻辑和真实时间。一旦对象的参考计数为零,内存就会直接发布。不要像其他机制那样等到特定时间。垃圾回收是随机分配到操作阶段的,并且处理回收存储器的时间被分配给通常,正常程序的操作相对稳定。
参考计数的第一个缺点是造成麻烦。每个对象需要一个单独的空间来计数参考计数。它需要垃圾空间,并且需要维持参考计数。在维护过程中犯错很容易。
引用计数的第二个缺点是它在某些情况下可能会缓慢运行。通常,垃圾回收将平稳运行,但是当需要释放一个相对较大的对象(例如字典)时,需要将其调用所有引用的对象。物体,这将需要很长时间。
参考计数的第三个缺点是周期参考,参考计数无法解决问题。