Python 垃圾回收机制
2015-04-18 16:40
330 查看
python 中垃圾回收有三种策略:
1.引用计数
2.标记-清除.
3.分代,收集
引用计数,相当于C++中的智能指针,python中是以对象为一个单位,每个单位中会维护一个计数器,当定义,创建或引用变量时,计数器会加1,当删除变量引用时计数器会减一。当计数值为0的时候,释放内存。
由于存在循环引用的问题,因此引入了标记-清除策略,该策略首先确定一个节点(当前不会被回收的节点,一般为全局对象),将它置到可达列表中,遍历可达列表,在可达列表中选取一个节点,把该节点引用过的其他节点也置到可达节点当中,直到可达列表不再增加为止,标记结束,回收不可达节点。
为了提高标记-清除的效率,提出了分代-收集策略,基本思想是:那些长时间在内存中的变量应该比较晚的收回。维护三代,默认为700、10、10,这些数字表示每一代中最多保存的变量数目。当1代超过阈值,回收1.2.3代,当2代超过阈值回收2.3.当3代超过阈值,回收3.
1.引用计数
2.标记-清除.
3.分代,收集
引用计数,相当于C++中的智能指针,python中是以对象为一个单位,每个单位中会维护一个计数器,当定义,创建或引用变量时,计数器会加1,当删除变量引用时计数器会减一。当计数值为0的时候,释放内存。
由于存在循环引用的问题,因此引入了标记-清除策略,该策略首先确定一个节点(当前不会被回收的节点,一般为全局对象),将它置到可达列表中,遍历可达列表,在可达列表中选取一个节点,把该节点引用过的其他节点也置到可达节点当中,直到可达列表不再增加为止,标记结束,回收不可达节点。
为了提高标记-清除的效率,提出了分代-收集策略,基本思想是:那些长时间在内存中的变量应该比较晚的收回。维护三代,默认为700、10、10,这些数字表示每一代中最多保存的变量数目。当1代超过阈值,回收1.2.3代,当2代超过阈值回收2.3.当3代超过阈值,回收3.
相关文章推荐
- python垃圾回收机制(转)
- python垃圾回收机制
- [转载]Python垃圾回收机制--完美讲解!
- Python的垃圾回收机制
- Python的垃圾回收机制深入分析--循环引用
- Python的垃圾回收机制(一)之简介
- 垃圾回收机制与 python 性能调优
- Python垃圾回收机制
- Python垃圾回收机制
- python的垃圾回收 机制
- 深入分析 Python 的垃圾回收机制
- Python 垃圾回收机制详解
- 深入分析 Python 的垃圾回收机制
- 对比Ruby和Python的垃圾回收(2):代式垃圾回收机制
- 理解Python垃圾回收机制
- Python垃圾回收机制
- python-垃圾回收机制
- python 垃圾回收机制的思考
- python的垃圾回收机制