垃圾回收机制:
Python中的垃圾回收算法是采用引用计数, 当一个对象的引用计数为0时, Python的垃圾回收机制就会将对象回收
给a变量赋值为'planet',a变量指向此字符串,此时该字符串对象的引用计数为1。又把a赋值给b,此时该字符串对象的引用计数为2,del a之后,a 变量不再指向该字符串,引用计数因此 - 1,变为1。而内存中实际的字符串对象并没有被删除, del语言只是删除了a 变量对该字符串对象的引用。
导致引用计数+1的情况:
1. 对象被创建,例如 a=' planet '
2. 对象被引用,例如 b=a
3. 对象被作为参数,传入到一个函数中,例如 func ( a )
4. 对象作为一个元素,存储在容器中,例如 list1 = [a,a]
导致引用计数-1的情况:
1. 对象的别名被显式销毁,例如 del a
2. 对象的别名被赋予新的对象,例如 a=17
3. 一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量对象所在的容器被销毁,或从容器中删除对象
网友评论