过程
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电脑。