首页 > 编程语言 > 详细

python的垃圾回收机制

时间:2020-12-17 20:59:08      阅读:34      评论:0      收藏:0      [点我收藏+]
1.基础概念
内存空间的申请与回收是非常耗费精力的事情,且存在极大的危险性,稍有不慎就有可能引发内存溢出问题,好在 Cpython 解释器提供了自动的垃圾回收机制来帮我们解决了这件事。 Python 的垃圾回收机制 ( 简称GC ) 主要采用的是引用计数为主、标记清除与分代回收为辅的垃圾回收策略
2.引用计数:
值被多次引用:不会在内存中重复创建数据,而是引用计数器+1,当对象被销毁时,引用计数器-1,如果引用计数器为0,在内存中进行删除销毁(暂时不考虑其他特殊的情况)。
引用计数是Cpython解释器提供的垃圾回收机制中的一种方法
 
问题:分析:
执行del操作之后,由于循环引用,所以他们的计数器不会为0,因此,引用计数,失效。
3。标记清除:
决循环引用的问题,我们引入了标记清除,只针对那些可能才在循环引用的对象,进行特殊处理,例如:列表、元组、字典、集合。
当这些类型中引入另外一个,并且只有他们互相引用,那么就给标记清除。
4.分代回收:
对标记清除要进行优化,将那些可能存在循环引用的对象拆分,拆分为3个不同的区域,称为:0/1/2(青年代、中年代、老年代),
0:当区域内对象个数阈值达到700时,才执行一个0代的扫描检查。
1:当0代(青年代)扫描次数超过10次,则执行一个1代稻苗检查
2:当1代(中年代)稻苗次数超过10次后,则执行一次2代的扫价差。
 
5.总结:
- 垃圾回收机制(GC机制)
- 以引用计数为主,标记清除和分代回收为辅

python的垃圾回收机制

原文:https://www.cnblogs.com/afufu/p/14151556.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!