python中垃圾回收机制
垃圾回收机制
机制讲解
- 当我们在运行程序时,很多的数据值会被闲置,得不到使用,这时就需要把这些无用的数据清除,在一些语言中,程序员需要自己编写代码删除这些无用的数据,但是python中不需要我们这么做,因此我们只需要了解python中垃圾回收机制的原理和运行方式
1.引用计数
- 当我们把一个变量名与数据值绑定的时候,python中会有数据存储数据值被引用的次数,这就是引用计数。当我们把变量名跟其他数据值绑定的时候,如果数据值的引用计数变成了零,那么在内存空间中就会把他删除,节省内存空间。
2.标记清除
- 当学习了引用计数后我们可以得知每次与变量名绑定,数据值都会增加一次引用计数,这里我们举个例子来说明循环引用:
s1 = [1, 2, 3]
s2 = [4, 5, 6]
# 这里我们会用到append函数,append函数就是在数据值的末尾加上的数据值。
# 当我们在s1和s2中互相加入,可以看到引用计数都变成了2.
s1.append(s2)
s2.append(s1)
- 但是当我们把s1、s2与数据值绑定关系断开后,我们可以发现两个列表的引用计数变成了1,当这种情况出现的时候,数据值并不会被第一时间清理掉,而是会一直存在于内存空间中,直到内存空间占满,程序会在这时自动停止运行,然后扫描所有的程序并给循环引用的程序打上标记,之后一次性清除.(这种处理方式叫标记清除)
3.分代回收
-
分代回收就是垃圾回收机制运行时,不对所有目标进行频繁检测,对于使用频率高的目标降低检测频率
-
当python运行垃圾回收机制的时候,如果频繁运行,同样会占用大量的内存资源,这个时候就体现了分代回收的用处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?