在python中的垃圾回收机制主要是以引用计数为主要手段以标记清除和隔代回收机制为辅的手段 。可以对内存中无效数据的自动管理!在这篇文章,带着这个问题来一直往下看:怎么知道一个对象能不能被调用了呢?
回顾内存地址
Python中的任何变量都有对应的内存引用,也就是内存地址。
如果不是容器类型,那么直接引用和赋值,内存地址都是不会的。
>>> a = 1
>>> b = 1
>>> id(a)
140709385600544
>>> id(b)
140709385600544
如果在内存中创建了一个list对象(容器),而且对该对象进行了引用。那么b = [1,2]和c = a有什么区别?
>>> a = [1,2]
>>> b = [1,2]
>>> id(a)
1966828025736
>>> id(b)
1966828044488
>>> c = a
>>> id(c)
1966828025736
首先在内存1966828025736处创建了一个列表 [1,2],然后定义了一个名为a的变量。b = [1,2]会新开一个内存地址,c = a直接赋值直接引用[1,2]的内存地址。
引用计数
在一些代码中,如果存在一些变量但是没有用&