关于python垃圾回收机制,引用计数,我知道当引用计数为0的时候,会被回收。
当我定义一个变量a = 88, 这个对象当我定义的时候引用计数就是 1 了
a变量的引用计数是怎么变成0然后被回收的?
引用计数变成0的方式有很多, 如代码del a
将a
变量删除, 引用计数变成0。
另一种是, 如果在函数中定义了变量a, 那么函数返回后, 变量a的引用计数变成0。
当该对象的别名被显式销毁时 del a
当该对象的引别名被赋予新的对象, a=26
一个对象离开它的作用域,例如 func函数执行完毕时,函数里面的局部变量的引用计数器就会减一(但是全局变量不会)
将该元素从容器中删除时,或者容器被销毁时。
参考 https://blog.csdn.net/m0_51691302/article/details/123117569
python垃圾回收机制_HiSiri~的博客-CSDN博客_python垃圾回收机制 看看这篇博客吧
默认采用
的垃圾回收机制 是 引用计数法(Reference Counting)
。引用计数法
的原理是:每个对象维护一个ob_ref
字段,用来记录该对象被引用的次数吗,每当新的引用指向该对象时,它的引用计数ob_ref
加1
,每当该对象引用失效时ob_ref
减1
,一旦该对象的引用计数为0
,该对象立即被回收,对象占用的内存空间将被释放。导致引用次数 +1
的情况:
a = 23
b = a
fun(a)
list1=[a, a]
导致引用计数-1
的情况:
del a
a = 24
func
函数中的局部变量
(全局变量不会)如果进一步感兴趣的话,可以看我的博客 https://blog.csdn.net/weixin_43662553/article/details/125294885