Python 垃圾回收和GC模块


垃圾回收机制:引用计数机制为主,标记-清除和分代收集两种机制为辅的策略

  引用计数

    每个对象创建之后都有一个引用计数,两个对象创建的值相同,就相当于有两个引用计数,当不使用这个对象时,引用计数为0的时候,那么此时的垃圾回收机制会自动把它销毁,回收内存空间

    存在缺点:当两个对象出现循环引用的时候,那么这两个变量始终不会被销毁,这样就会导致内存泄露

GC模块

   当垃圾回收机制中出现循环引用,不能销毁对象,这时就可以使用GC模块

   

   gc.get_threshold(),此方法返回的是(700,10,10)这是gc的默认值,即在第0代对象数据达到700个之前,不把未被回收的对象放入第一代,而在第一代对象数量达到10个之前也不把未被回收的对象移到第二代

   此方法设计到分代回收的策略,Python中默认把所有对象分成三代,第0代包含了最新的对象,第2代则是最早的一些对象,在一次垃圾回收中,所有未被回收的对象会被移到高一代的地方