Python对象循环引用垃圾回收算法详情
作者:moilbeauty 发布时间:2021-03-02 23:29:14
标签:Python,循环,垃圾,回收,算法
来介绍一下 Python 是采用何种途径解决循环引用问题的。
上图中,表示的是对象之间的引用关系,从自对象指向他对象的引用用黑色箭头表示。每个对象里都有计数器。 而图中右侧部分可以很清晰的看到是循环引用的垃圾对象。
上图,将每个对象的引用计数器复制到自己的另一个存储空间中。
上图其实和图二没什么区别,只不过更清晰了。因为对象本来就是由对象链表连接的。只不过是把对象链表画了出来。
上图中,将新复制的计数器都进行了减量的操作。先不要管为什么,继续往下看。但是可以看到,由根直接引用的对象中,新复制的计数器并没有减量。以上操作执行完毕后,再把对象分为可能到达的对象链表和不可能到达的对象链表。
之后将具备如下条件的对象连接到“可能到达对象的链表”。
经过 (4) 的减量操作后计数器值大于等于 1。有从活动对象的引用。
再将具备如下条件的对象连接到“不可能到达对象的链表”。
经过 (4) 的减量操作后计数器值为 0没有从活动对象的引用
现在上图显示的就是垃圾对象链表和活动对象的链表了。接下来的步骤就是释放不可能到达的对象,再把可能到达的对象连接到对象链表。
这样,Python中只要将“部分标记-清除算法”稍加变形,就解决了循环引用问题。
来源:https://blog.csdn.net/xuemeilu/article/details/126646664
0
投稿
猜你喜欢
- 想必Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的。我刚用 Go 语言
- 环境介绍系统环境:Windows 10Python版本:Python 3.5必备包:无 运行Python脚本:.bat文件在Win
- 在php中判断一个文件或目录是否存在,大家通常都会想到is_file和file_exists两个函数。但这两个函数再判断一个远程url文件是
- 这世上“没有丑女人,只有懒女人”这是女人美丽圣经里的最精彩的一句话了,一个女人只要舍得花时间琢磨怎么保养,怎么打扮,总能够找到方法展现自己美
- 一般事件事件浏览器支持描述onClickHTML: 2 | 3 | 3.2 |
- 提到SQL Server 2005证书,很多人可能以为它只是用来在传输数据的时候起到加密作用的,但在深入了解后,你会发现它的用处还有很多。
- 在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json
- 定义简单的类面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了!定义只包含方法的类在pyt
- 本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下1. 导入游戏库import pgzrunimport r
- 摘要:对动态SQL的程序开发进行了总结,并结合笔者实际开发经验给出若干开发技巧。 关键词:动态SQL,PL/SQL,高性能 1. 静态SQL
- 前言:记一次golang使用json进行对象copy的内存溢出问题排查问题现象:新增的功能,灰度部署在k8s集群的服务,发现机器老是被打崩,
- location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.hre
- <%@ transaction = required %><%response.b
- 作为一个MySQL的系统管理员,你有责任维护你的MySQL数据库系统的数据安全性和完整性。本文主要主要介绍如何建立一个安全的MySQL系统,
- 下拉菜单平常见到的都是用js来实现的,本文介绍的方法是使用纯CSS实现导航下拉菜单功能,代码符合标准,兼容性好且环保,制作下拉菜单的不错选择
- CGArt®2008“贺岁刊”玉鼠闹春,700页再造巅峰本期CGArt杂志信息:下载地址:http://cgart.cgfi
- 在我们关于SQL服务器安全系列的这文章里,我们的目标是向你提供安全安装SQL服务器所需要的工具和信心,这样的话,你有价值的数据就会受到保护,
- 一、利用ASP和ADO实现数据库操作的工作流程ASP内嵌了五个对象Resquest、Response、Server、Seesion、Appl
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 9 - Input Filterin
- 本文实例讲述了python追加元素到列表的方法。分享给大家供大家参考。具体实现方法如下:scores = ["1",&q