垃圾回收机制
"""
有一些语言内存空间的申请和释放需要程序员写代码才能完成,但是python不需要,通过垃圾回收机制自动管理
"""
1.引用计数
name = 'max' #数据值'max'的引用计数为1
name1 = name #数据值'max'的引用计数为2
数据值被变量名引用的次数称为引用计数。当引用计数为0时,该数据值就会被垃圾回收机制清理回收。当引用计数不为0,该数据值不会被垃圾回收机制回收。
2.标记清除
针对循环引用问题:
l1 = [1, 2, 3] #引用计数为1
l2 = [4, 5, 6] #引用计数为2
l1.append(l2) #l1 = [1, 2, 3, l2列表]
l2.append(l1) #l2 = [4, 5, 6, l1列表]
del l1 #断开变量名l1与列表的绑定关系
del l2 #断开变量名与l2列表的绑定关系
当内存占用达到顶峰是,程序就会自动停止,然后扫描程序中所有数据并给产生循环引用的数据打上标记,然后一次性清除
3.分代回收
把数据值按照检索频率分为几类(定义为新生代、青春代、老年代),每隔一段时间对数据值的引用频率进行检索,同样时间段内引用频率越高检索频率越低,说明该数据越重要。