垃圾回收机制
Python-垃圾回收(GC)机制 一、什么是GC 在Java中,对象所占用的内存在对象不再使用后会自动被回收。这些工作是由一个叫垃圾回收器 ( Garbage Collector )的进程完成的。 python和其他很多高级语言一样,都自带垃圾回收机制,即GC机制。 二、GC机制 Python中的垃圾回收是以引用计数为主,标记-清除和分代收集为辅。引用计数最大缺陷就是循环引用的问题,所以Python采用了辅助方法。 注意: 1、垃圾回收时,Python不能进行其它的任务,频繁的垃圾回收将大大降低Python的工作效率; 2、Python只会在特定条件下,自动启动垃圾回收(垃圾对象少就没必要回收) 3、当Python运行时,会记录其中分配对象(object allocation)和取消分配对象(object deallocation)的次数。当两者的差值高于某个阈值时,垃圾回收才会启动。 1、引用计数 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。 原理 引用计数法的原理是每个对象维护一个ob_refcnt,用来记录当前对象被引用的次数,也就是来追踪到底有多少引用指向了这个对象。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少。当引用计数为0时,该对象生命就结束了。 源码如下: /