Python垃圾回收机制
https://zhuanlan.zhihu.com/p/83251959
视频
https://www.bilibili.com/video/BV1F54114761
import sys
# 引用计数 (Reference Counting)
# 对象被创建
a = 2
print(sys.getrefcount(a))
# 对象被容器list引用
b = [a]
print(sys.getrefcount(a))
# 作为形参
def func(param):
print(sys.getrefcount(param))
return param * 2
func(a)
print(sys.getrefcount(a))
# 引用计数缺点:
# 循环引用,额外空间开销,某些场景计算复杂
# 容器对象才会发生循环引用
# 标记清除 (Mark and Sweep)
# 解决循环引用
# 垃圾回收阶段会暂停整个应用程序,等到标记清除结束后,才会恢复应用程序的运行
# 分代回收 (Generational Collection)
# 清除循环引用时,整个程序会被暂停,为了减少程序暂停时间,引入了"分代回收"机制
import gc
print(gc.get_threshold())