垃圾回收机制

垃圾回收机制

垃圾回收机制

"""
有一些语言 内存空间的申请和释放都需要程序员自己写代码才可以完成 
但是python不需要 通过垃圾回收机制自动管理
"""
1.引用计数
    name = 'guts' 数据值guts身上的引用计数为1
    name1 = name  数据值guts身上引用的计数加一 为2
    del name1     数据值guts身上的引用计数减一 为1
    当数据值身上的引用计数为0的时候 就会被垃圾回收机制当作垃圾回收掉
    当数据值身上的引用计数不为0的时候 永远不会被垃圾回收机制回收
    
2.标记清除
    主要针对循环引用问题
        l1 = [11, 22]  # 引用计数为1
        l2 = [33, 44]  # 引用计数为1
        l1.append(l2)  # l1 = [11, 22, l2列表]  引用计数为2
        l2.append(l1)  # l2 = [33, 44, l1列表]  引用计数为2
        del l1 # 断开变量名l1与列表的绑定关系  引用计数为1
        del l2 # 断开变量名l2与列表的绑定关系  引用计数为1
    当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中所有的数据
    并给只产生循环引用的数据打上标记 之后一次性清除

3.分代回收
    垃圾回收机制的频繁运行也会损耗各项资源
    新生代、青春带、老年代(越往下渐层频率越低)

image

posted @ 2023-01-17 17:30  理塘丁真1!5!  阅读(24)  评论(0编辑  收藏  举报