2023-04-10

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())
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容