垃圾回收机制(GC)
- 垃圾回收机制(简称GC)是Python解释器自带的一种机制
- 专门用来回收不可用的变量值所占用的内存空间(在内存中,没有变量名指向的数据都是垃圾数据)
(1)引用计数
name = 'dhy' # 'dhy' 的 引用计数就是 1
a = name # 'dhy' 的 引用计数就是2
(2)标记清除
#一旦你的内存空间装满了,溢出,那此时程序就会停止,然后进行两项工作
#标记:'dhy' :0
#清除:
(3) 分代回收
![img](C:\Users\asus\Desktop\新建文件夹 (3)\垃圾回收机制.assets\2322215-20230515145624957-1914893419.png)
#第一阶段:新生代#[] ---30s扫描一次
#第二阶段:青春代[] --- 3min扫描一次
#第三阶段:老年代[] --- 5min扫描一次
- 分代回收的核心思想是:
- 在历经多次扫描的情况下,都没有被回收的变量,gc机制就会认为,该变量是常用变量,gc对其扫描的频率会降低
- 具体实现原理如下:
分代指的是根据存活时间来为变量划分不同等级(也就是不同的代)
新定义的变量,放到新生代这个等级中,假设每隔1分钟扫描新生代一次,如果发现变量依然被引用,那么该对象的权重(权重本质就是个整数)加一,当变量的权重大于某个设定得值(假设为3),会将它移动到更高一级的青春代,
青春代的gc扫描的频率低于新生代(扫描时间间隔更长),假设5分钟扫描青春代一次,这样每次gc需要扫描的变量的总个数就变少了,节省了扫描的总时间,
接下来,青春代中的对象,也会以同样的方式被移动到老年代中。
也就是等级(代)越高,被垃圾回收机制扫描的频率越低
标签:变量,扫描,回收,gc,垃圾,机制
From: https://www.cnblogs.com/dhyuan/p/17917217.html