您的位置:首页 > 编程语言 > Python开发

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: