Python特殊机制之垃圾回收机制
1.如何更好的学习Python2.Python准备之Python环境安装和Pycharm使用3.Python准备之笔记-MarkDown格式及云端笔记4.Python准备之软件开发规范5.Python基础之计算机基础6.Python基础之编程语言7.Python基础之Python基本构成8.Python基础之流程控制
9.Python特殊机制之垃圾回收机制
10.Python中级之数据类型的内置方法11.Python中级之可变数据类型和不可变数据类型12.Python中级之文件操作13.Python中级之列表字典推导式和三元运算符14.Python中级之深浅拷贝15.Python中级之字符编码16.Python中级之异常处理17.Python中级之解压赋值18.Python高级之闭包函数19.Python高级之函数介绍20.Python高级之名称空间与作用域21.Python高级之装饰器22.Python高级之模块与包23.Python高级之迭代器与生成器24.Python模块之re模块25.Python模块之os模块26.Python模块之random模块27.Python模块之序列化模块(json模块与pickle模块)28.Python模块之time模块和datetme模块29.Python高级之递归函数30.Python高级之常见的内置函数31.Python模块之sys模块32.Python模块之hashlib模块33.Python模块之logging模块34.Python面向对象之面向对象编程35.Python面向对象之三大特征-封装36.Python面向对象之绑定方法和非绑定方法37.Python面向对象之三大特征-继承38.Python面向对象之三大特征-多态39.Python面向对象之派生40.Python面向对象之组合41.Python面向对象之反射垃圾回收机制
【1】参考博客:
【5.0】Python基础之垃圾回收机制 - Chimengmeng - 博客园 (cnblogs.com)
【2】博客摘要
-
垃圾回收机制作为python解释器自带的一种功能,其目的在于帮助系统更好的管理内存,提高程序的运行效率
-
垃圾回收机制,用来回收不可用的变量值所占用的内存空间(在内存中,没有变量名指向的数据都是垃圾数据)
-
垃圾回收机制,引用计数为主,垃圾回收、分代回收为辅。
-
-
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。
- 在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题,并且通过“分代回收”(generation collection)以空间换取时间的方式来进一步提高垃圾回收的效率。
-
一个变量值可以有多个变量名指向,有一个变量名指向,引用计数就是1,有两个就是2
- 只要引用计数不为0,这个变量值就不是垃圾数据,当引用计数为0了,说明这个变量值就没用了,就可以清除了
一个变量名只能指向一个内存空间: 意味着一个变量名在某一时刻只能代表一个值。当你给一个变量赋新值时,它将指向新的内存空间,不再指向之前的。 一个内存空间可以被多个变量名指向: 多个变量名可以同时指向相同的内存空间。这意味着如果你改变了这个内存空间的值,所有指向它的变量都会受到影响。
- 较为复杂的底层机制,个人认为知晓操作逻辑即可
引用计数
当引用计数为0时,清除内存空间
直接引用与间接引用
标记清除
当内存空间占用到一定巨大的量时,会执行标记清除,清除所有我们通过直接引用调用不到的内存空间,哪怕它的引用次数不为0
eg : 当你出门遛狗,你把绳子放掉了,狗无法找回,当城管发现时,会将你的狗子回收清除
分代回收
高频率的扫描所有内存空间,效率较低,所以有了分代回收的概念
为变量打上“标签” ,根据标签,调整扫描频率
eg : 新任教师带班,第一天全部标记为新同学,检查作业,第二天同样全部检查,第三天将第一第二天都做作业的标记为良好学生,第四天检查新同学,并隔3天检查一次良好的同学,…… 每个同学每个阶段如果获得一定量的小红花次数,将减少扫描频率,只需要频繁扫描新同学即可,提高效率
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了