当前位置: 首页 > 图灵资讯 > 行业资讯> python标记清除的过程

python标记清除的过程

来源:图灵python
时间: 2024-07-25 20:15:57

过程

1、垃圾收集的第一步是通过可收集对象链表从引用中删除引用。

PyGC_一些container对象Head.gc.gc_ref还不是0。

2、对象的外部引用存在,这些对象是开始标记的root object集合。

实例

首先,让我们谈谈变量的概念:
1变量名:不存值,只指向内存地址
2赋值符号
3变量值:这是存储数据的地方
变量存在于内存中,变量名存放在堆栈中,变量值存放在堆栈中
我们只能控制堆,即变量值,不能控制存储在变量名中的地方
比如:x=1
x=2
x最终等于2,因为x指向的内存地址改变了
我们都通过变量名访问值,它会有一个标记过程,存在于栈区的对象称为GCRoots对象
扫描栈区(变量名)中的所有内容,将所有栈区中直接或间接访问的对象标记为生存对象,其余为非生存对象,应该被清除
例如:l1=[1]
l2=[2]
l1.append(l2)
l2.append(l1)
dell1
dell2
GCRoots可达的对象是什么?通过栈区(变量名)可以到达(访问)的对象,称为GCRots可以到达的对象,
l1是GCRots,del解除了l1与指向内存地址的绑定,l1没有引用计数

以上是清除python标记的过程,希望对大家有所帮助。更多Python学习指导:python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。