python中垃圾回收机制

垃圾回收机制

机制讲解

  • 当我们在运行程序时,很多的数据值会被闲置,得不到使用,这时就需要把这些无用的数据清除,在一些语言中,程序员需要自己编写代码删除这些无用的数据,但是python中不需要我们这么做,因此我们只需要了解python中垃圾回收机制的原理和运行方式

1.引用计数

  • 当我们把一个变量名与数据值绑定的时候,python中会有数据存储数据值被引用的次数,这就是引用计数。当我们把变量名跟其他数据值绑定的时候,如果数据值的引用计数变成了零,那么在内存空间中就会把他删除,节省内存空间。

image

2.标记清除

  • 当学习了引用计数后我们可以得知每次与变量名绑定,数据值都会增加一次引用计数,这里我们举个例子来说明循环引用:

image

s1 = [1, 2, 3]
s2 = [4, 5, 6]
# 这里我们会用到append函数,append函数就是在数据值的末尾加上的数据值。
# 当我们在s1和s2中互相加入,可以看到引用计数都变成了2.
s1.append(s2)
s2.append(s1)
  • 但是当我们把s1、s2与数据值绑定关系断开后,我们可以发现两个列表的引用计数变成了1,当这种情况出现的时候,数据值并不会被第一时间清理掉,而是会一直存在于内存空间中,直到内存空间占满,程序会在这时自动停止运行,然后扫描所有的程序并给循环引用的程序打上标记,之后一次性清除.(这种处理方式叫标记清除)

3.分代回收

  • 分代回收就是垃圾回收机制运行时,不对所有目标进行频繁检测,对于使用频率高的目标降低检测频率

  • 当python运行垃圾回收机制的时候,如果频繁运行,同样会占用大量的内存资源,这个时候就体现了分代回收的用处。

image

posted @   吴仁耀  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
  1. 1 原来你也在这里 周笔畅
  2. 2 世间美好与你环环相扣 柏松
  3. 3 起风了 吴青峰
  4. 4 极恶都市 夏日入侵企划
原来你也在这里 - 周笔畅
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 姚谦

作曲 : 中島みゆき

编曲 : Terence Teo

制作人 : 朱敬然

请允许我尘埃落定

请允许我尘埃落定

用沉默埋葬了过去

满身风雨我从海上来

才隐居在这沙漠里

该隐瞒的事总清晰

千言万语只能无语

爱是天时地利的迷信

喔 原来你也在这里

啊 那一个人

是不是只存在梦境里

为什么我用尽全身力气

却换来半生回忆

若不是你渴望眼睛

若不是我救赎心情

在千山万水人海相遇

喔 原来你也在这里

请允许我尘埃落定

请允许我尘埃落定

用沉默埋葬了过去

满身风雨我从海上来

才隐居在这沙漠里

该隐瞒的事总清晰

千言万语只能无语

爱是天时地利的迷信

喔 原来你也在这里

啊 那一个人

是不是只存在梦境里

为什么我用尽全身力气

却换来半生回忆

若不是你渴望眼睛

若不是我救赎心情

在千山万水人海相遇

喔 原来你也在这里

啊 那一个人

啊 那一个人

是不是只存在梦境里

为什么我用尽全身力气

却换来半生回忆

若不是你渴望眼睛

若不是我救赎心情

在千山万水人海相遇

喔 原来你也在这里

该隐瞒的事总清晰

千言万语只能无语

爱是天时地利的迷信

喔 原来你也在这里

OT: AISARERU HANA AISAREXIU HANA

OT: AISARERU HANA AISAREXIU HANA

(中文版:原来你也在这里)

OP: Yamaha Music Publishing Inc

SP:百代音乐版权代理(北京)有限公司

配唱制作人:翁乙仁

点击右上角即可分享
微信分享提示