垃圾回收机制
垃圾回收机制时现阶段任何高级语言的特性
垃圾回收:Garbage Collection : GC
遵循垃圾回收算法 python中:
以 引用计数垃圾回收算法为主要回收机制
以 标记清除 和 分代回收为辅助回收机制
引用计数收走完全没有引用的对象,标记清楚收走不可达的对象,
- 引用计数
当一个对象被创建或者拷贝时,引用计数就会+1 当这个对象的某个引用被销毁时引用计数就会-1,让一个对象的引用计数为0时则该对象已经不被引用,就会被垃圾回收机制清除并释放该对象占有的内存空间
优点:操作简单,实用性能优秀能在短时间内获取运算对象引用数
缺点:必须提供和对象对等的内存消耗来维护引用计数,增加内存负担,对于循环应用\对象之间的互相引用,是无法进行引用计数的操作的
Python中的对象是直接或者间接的继承自object对象
Object对象底层是c的一个结构体
Import sys
Sys.getrefcount() 查询指定对象的引用计数
循环引用的出现,造成了引用计数算法的bug
这是用到了第二种辅助垃圾回收算法
- 标记清除
优点:标记程序中的每一个对象是否可达
缺点:消耗内存
- 分代回收
是一种通过空间换取时间效率的做法,
Python中定义了三个不同的链表数据结构【第零代, 第一代, 第二代】
为了提高程序执行效率,将垃圾回收机制进行了阈值限定,o代链表中的垃圾回收机制执行最为密集,其次是一代 二代
参考文章
https://www.cnblogs.com/pinganzi/p/6646742.html
垃圾回收处理
Python中的gc模块提供了垃圾回收处理的各项功能机制,必须通过import引用才能使用
Import gc