python垃圾回收机制


一、垃圾回收机制

机制讲解

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

1、引用计数

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

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 @ 2022-10-05 21:21  致丶幻  阅读(39)  评论(0编辑  收藏  举报