Python垃圾回收機制
https://zhuanlan.zhihu.com/p/83251959
視頻
https://www.bilibili.com/video/BV1F54114761
import sys
# 引用計數(shù) (Reference Counting)
# 對象被創(chuàng)建
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))
# 引用計數(shù)缺點:
# 循環(huán)引用奶赔,額外空間開銷,某些場景計算復(fù)雜
# 容器對象才會發(fā)生循環(huán)引用
# 標(biāo)記清除 (Mark and Sweep)
# 解決循環(huán)引用
# 垃圾回收階段會暫停整個應(yīng)用程序冲甘,等到標(biāo)記清除結(jié)束后湾蔓,才會恢復(fù)應(yīng)用程序的運行
# 分代回收 (Generational Collection)
# 清除循環(huán)引用時,整個程序會被暫停壹甥,為了減少程序暫停時間救巷,引入了"分代回收"機制
import gc
print(gc.get_threshold())