垃圾回收机制
当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,当垃圾过多时会使程序崩溃,所以python会专门回收不可用的变量值占用内存。
知识预备
堆区和栈区
栈区存放变量名与内存地址的对应关系
堆区存放变量值
直接引用和间接引用
x = 10直接
a = x间接
原理解读
引用计数:变量值被变量名关联次数
name = zhujiaji
直接和间接引用都可以增加引用次数
变量名和变量值解除关系时,变量的引用计数变为0.
引用计数变为0时,垃圾回收机制回收
循环引用克星标记和清除
在清除的过程中可能引用次数变为1时不再被引用
标记和清除就排上了用场
当内存空间被耗尽时,停止程序。开始标记从根出发观察栈区是否有内容遍历堆中所有内容将没有标记的删除。
效率问题克星分代回收
遍历一遍将无法删除的画上标记,在下次的扫描中频率依次降低
新生代
青春代
老年代