python垃圾回收机制_第13p,Python的优化与垃圾回收机制(下篇)

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第13篇文章,第二阶段的课程:Python基础知识:Python的优化与垃圾回收机制(下篇)。

学习本课程,建议先看一遍:【计算机基础知识】课程。

d723b49d4315b38cf010f02f8fd3f24e.png

一、变量的引用计数

当我们定义一个变量l1 = 10的时候,会在内存中的栈区开辟一个l1的名称空间,同时也会在内存中的堆区开辟一个内存空间存放10这个数值,而l1 = 10相当于把x指向10的内存地址;

我们把x指向10称为,10被引用了1次;

如果再定义 y = 10,同时,y也指向了10的内存地址,加上前面的x,10这个数值同时被x和y引用,也就是被引用了2次;

一个数值被1几个变量引用,我们称为引用次数;计算数值被引用的次数,称为引用计数。

当一个数值的引用计数为0时,Python会自动将该数值释放。

59f4b259e37abb422f2fce0e8cb85875.png

二、Python中的垃圾回收机制

垃圾回收机制:Python解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间。

1、标记清除机制

我们定义一个变量的目的是为了取用它(定义变量就是为了用),当一个数值无法被直接调用或间接调用时,Python中的标记清除机制会将这样的数值在内存中释放。

f5ac14d5f898c8e7cd2281fa26ed9c9a.png

2、分代回收机制

标记清除的机制会不断循环查看变量值的引用次数;如果程序比较大,会比较占用程序的运行空间;所以,Python提出了另一种优化机制:分代回收机制。

标记清除机制是把所有值都查看一遍,看看值是否有被引用;分代回收机制会把所有值进行分类(可以理解成分信用等级),对于引用次数较多且一直在调用的值,不会每次都去查看它的引用次数(有点像老师管理学生,优等生、差生的态度都不一样)。

b2ffbf8e04a57e858b59654fbcc9a78e.png

以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。

感谢您的阅读,您的关注点赞就是对我最大的支持,谢谢!

本文由杨数Tos原创,欢迎关注,带你一起长知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值