大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第13篇文章,第二阶段的课程:Python基础知识:Python的优化与垃圾回收机制(下篇)。
学习本课程,建议先看一遍:【计算机基础知识】课程。
一、变量的引用计数
当我们定义一个变量l1 = 10的时候,会在内存中的栈区开辟一个l1的名称空间,同时也会在内存中的堆区开辟一个内存空间存放10这个数值,而l1 = 10相当于把x指向10的内存地址;
我们把x指向10称为,10被引用了1次;
如果再定义 y = 10,同时,y也指向了10的内存地址,加上前面的x,10这个数值同时被x和y引用,也就是被引用了2次;
一个数值被1几个变量引用,我们称为引用次数;计算数值被引用的次数,称为引用计数。
当一个数值的引用计数为0时,Python会自动将该数值释放。
二、Python中的垃圾回收机制
垃圾回收机制:Python解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间。
1、标记清除机制
我们定义一个变量的目的是为了取用它(定义变量就是为了用),当一个数值无法被直接调用或间接调用时,Python中的标记清除机制会将这样的数值在内存中释放。
2、分代回收机制
标记清除的机制会不断循环查看变量值的引用次数;如果程序比较大,会比较占用程序的运行空间;所以,Python提出了另一种优化机制:分代回收机制。
标记清除机制是把所有值都查看一遍,看看值是否有被引用;分代回收机制会把所有值进行分类(可以理解成分信用等级),对于引用次数较多且一直在调用的值,不会每次都去查看它的引用次数(有点像老师管理学生,优等生、差生的态度都不一样)。
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的关注点赞就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。