Python垃圾回收机制
pythonGC主要使用引用计数(referencecounting)来跟踪和回收垃圾。
在引用计数的基础上,通过“标记-清除”(markandsweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generationcollection)以空间换时间的方法提高垃圾回收效率。
1引用计数
PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少.引用计数为0时,该对象生命就结束了。
>>优点:
简单
实时性
缺点:
维护引用计数消耗资源
循环引用
2标记-清除机制
基本思路是先按需分配,等到没有空闲内存的时候从寄存器和程序栈上的引用出发,遍历以对象为节点、以引用为边构成的图,把所有可以访问到的对象打上标记,然后清扫一遍内存空间,把所有没标记的对象释放。
3分代技术
分代回收的整体思想是:将系统中的所有内存块根据其存活时间划分为不同的集合,每个集合就成为一个“代”,垃圾收集频率随着“代”的存活时间的增大而减小,存活时间通常利用经过几次垃圾回收来度量。
Python默认定义了三代对象集合,索引数越大,对象存活时间越长。
举例:当某些内存块M经过了3次垃圾收集的清洗之后还存活时,我们就将内存块M划到一个集合A中去,而新分配的内存都划分到集合B中去。当垃圾收集开始工作时,大多数情况都只对集合B进行垃圾回收,而对集合A进行垃圾回收要隔相当长一段时间后才进行,这就使得垃圾收集机制需要处理的内存少了,效率自然就提高了。在这个过程中,集合B中的某些内存块由于存活时间长而会被转移到集合A中,当然,集合A中实际上也存在一些垃圾,这些垃圾的回收会因为这种分代的机制而被延迟。
以上内容为大家介绍了Python垃圾回收机制,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。
相关推荐HOT
更多>>python并集是什么意思?
python并集是什么意思?本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。以属于A或属于B的元素为元素的集合成为A与B的并集。1、概念...详情>>
2023-11-14 16:44:05python框架是什么
python框架是什么1、说明Python开发框架大大减少了开发者不必要的重复劳动,提高了项目开发效率的同时,还使得创建的程序更加稳定。2、框架类型...详情>>
2023-11-14 14:57:51pythonlstrip()截掉字符
python中lstrip()截掉字符说明1、lstrip()方法用于截掉字符串左边的空格或指定的字符。语法str.lstrip([chars])2、参数分为str、chars。str:原...详情>>
2023-11-14 07:58:15python删除文档的方法
python中删除文档的方法1、delete_one()方法删除文档。delete_one()需要一个查询对象参数。它只删除了第一次出现。2、在删除大量文档时,使用de...详情>>
2023-11-14 06:54:49