python内存的垃圾回收机制

垃圾回收机制

垃圾回收机制时现阶段任何高级语言的特性

垃圾回收:Garbage Collection  : GC

遵循垃圾回收算法  python中:

以 引用计数垃圾回收算法为主要回收机制

以 标记清除 和 分代回收为辅助回收机制

 

引用计数收走完全没有引用的对象,标记清楚收走不可达的对象,

 

  1. 引用计数

当一个对象被创建或者拷贝时,引用计数就会+1 当这个对象的某个引用被销毁时引用计数就会-1,让一个对象的引用计数为0时则该对象已经不被引用,就会被垃圾回收机制清除并释放该对象占有的内存空间

优点:操作简单,实用性能优秀能在短时间内获取运算对象引用数

缺点:必须提供和对象对等的内存消耗来维护引用计数,增加内存负担,对于循环应用\对象之间的互相引用,是无法进行引用计数的操作的

Python中的对象是直接或者间接的继承自object对象

Object对象底层是c的一个结构体

Import sys

Sys.getrefcount() 查询指定对象的引用计数

 

 

循环引用的出现,造成了引用计数算法的bug

这是用到了第二种辅助垃圾回收算法

  1. 标记清除

优点:标记程序中的每一个对象是否可达

缺点:消耗内存

  1. 分代回收

是一种通过空间换取时间效率的做法,

Python中定义了三个不同的链表数据结构【第零代, 第一代, 第二代】

为了提高程序执行效率,将垃圾回收机制进行了阈值限定,o代链表中的垃圾回收机制执行最为密集,其次是一代  二代

参考文章

https://www.cnblogs.com/pinganzi/p/6646742.html

垃圾回收处理

Python中的gc模块提供了垃圾回收处理的各项功能机制,必须通过import引用才能使用

Import gc

猜你喜欢

转载自blog.csdn.net/jinianh/article/details/82053759
今日推荐