python的内存管理机制:引用计数器机制+垃圾回收机制 #####引用计数器机制: 对象被引用时加1,不被引用时减1,当计数器为0时,该对象会被自动销毁
引用计数加1场景:
- 对象被创建 p1 = Person()
- 对象被引用 p2 = p1
- 对象作为参数,传入到一个函数中
- 对象作为一个元素,存在容器中 l = [p1]
引用计数减1场景:
- 对象的别名被显示销毁 del p1
- 对象的别名被赋予新的对象: p1 =123
- 一个对象离开了它的作用域:一个函数执行完毕,内部的局部变量关联的对象,它的引用计数减1
- 对象所在的容器被销毁,或从容器中删除该对象
class Person:
pass
class Dog:
pass
import objgraph
p = Person()
d = Dog()
print(objgraph.count('Person')) #1
print(objgraph.count('Dog')) #1
#对象 p 和 d相互持有,造成循环引用,当p和d被释放时,
p.pet= d
d.master = p
del p
del d
print(objgraph.count('Person')) #1
print(objgraph.count('Dog')) #1
复制代码