垃圾回收
Python中默认开启开启自动垃圾回收。
管理方式
Python中使用引用计数管理分配的内存,当对象引用计数为0时,对象就被释放。
引用计数
何时增加
1. 对象被赋值
import sys
print(sys.getrefcount(12345))
a=12345
print(sys.getrefcount(12345))
2. 对象被引用
import sys
a=12345
print(sys.getrefcount(12345))
b=a
print(sys.getrefcount(12345))
3. 对象被置入容器
import sys
a=12345
print(sys.getrefcount(12345))
lis=[a]
print(sys.getrefcount(12345))
何时减少
1. 变量被赋新值
import sys
a=12345
print(sys.getrefcount(12345))
a=12
print(sys.getrefcount(12345))
2. 对象被显式销毁
import sys
a=12345
print(sys.getrefcount(12345))
del a
print(sys.getrefcount(12345))
3. 对象所在容器被显式销毁
import sys
a=12345
lis=[a]
print(sys.getrefcount(12345))
del lis
print(sys.getrefcount(12345))
4. 对象离开作用域
import sys
def func():
a=12345
print(sys.getrefcount(12345))
func()
print(sys.getrefcount(12345))