关键词:垃圾回收、引用计数、分代回收、标记-清除
前言:理解python中变量的定义:抽象理解python中变量的定义过程
1、垃圾回收机制的基本组成:python采用的是以引用计数为主,以分代回收和标记清除为辅的垃圾回收机制
2、详细分析垃圾回收机制: (1)首先是引用计数:在python中,每创建一个对象,那么python解释器会自动为其设置一个特殊的变量,这个变量称为引用计数(初始值默认是1)。一旦有一个新变量指向这个对象,那么这个引用计数的值就会加1。如果引用计数的值为0。那么python解释器的内存管理系统就会自动回收这个对象所占的内存空间,删除掉这个对象。
①引用计数+1的情况:对象被创建,例如a = "laoliang"
对象被引用,例如b = a
对象被作为参数,传入到一个函数中,例如fun(a)
对象作为一个元素,存储在容器中,例如data_list=[a,b]
②引用计数-1的情况:对象的别名被显式销毁,例如del a
对象的别名被赋予新的对象,例如a = 24
一个对象离开它的作用域,例如func函数执行完毕时,func函数中的局部变量(全局变量不会)
对象所在的容器被销毁,或从容器中删除对象
③查看一个对象的引用计数:import sys a = "hello laoliang" sys.getrefcount(a)