Python垃圾回收机制
一、引用计数
引用计数通俗易懂可以理解为:
变量的命名规范中需要是这种格式:key=value,key称为变量名,value是变量的数值。
引用计数就是指,【最后使用】value的key的个数。
【最后使用】这个值的变量的个数就是引用计数的最终结果数值。
Python垃圾回收主要以引用计数为主,分代回收为辅。
『引用计数法』的原理是:每个对象维护一个ob_ref字段,用来记录该对象当前被引用的次数,每当新的引用指向该对象时,它的引用计数ob_ref加1,每当该对象的引用失效时计数ob_ref减1,一旦对象的引用计数为0,该对象立即被回收,对象占用的内存空间将被释放。
对象被创建 a=14
对象被引用 b=a
对象被作为参数,传到函数中 func(a)
对象作为一个元素,存储在容器中 List={a,”a”,”b”,2}
与上述情况相对应,当发生以下四种情况时,该对象的引用计数器-1
当该对象的别名被显式销毁时 del a
当该对象的引别名被赋予新的对象, a=26
一个对象离开它的作用域,例如 func函数执行完毕时,函数里面的局部变量的引用计数器就会减一(但是全局变量不会)
将该元素从容器中删除时,或者容器被销毁时。
通俗易懂如下所示:
因为每个变量都有对应的值,所以没有值的变量【a 前】就是Python眼中的垃圾,就会被内存给清理掉!!
a=10 前
b=a
a=20 后
a的值被b替换,然后a又重新赋值,那么之前的a就会变成Python眼中的垃圾,被内存清理掉!!!!