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 @ 2022-09-27 19:56  吴仁耀  阅读(44)  评论(0编辑  收藏  举报