垃圾回收机制
垃圾回收机制
"""
有一些语言 内存空间的申请和释放都需要程序员自己写代码才可以完成
但是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.分代回收
垃圾回收机制的频繁运行也会损耗各项资源
新生代、青春带、老年代(越往下渐层频率越低)
标签:回收,计数,l2,垃圾,l1,机制,引用
From: https://www.cnblogs.com/DragonY/p/17058397.html