美文网首页
如何在环形数据结构中管理内存

如何在环形数据结构中管理内存

作者: udhga | 来源:发表于2019-01-23 01:03 被阅读5次

使用标准库weakref,它可以创建一种能访问对象但不增加引用计数的对象
若引用通过循环引用来解决这个问题,本质上说,
弱引用时一个指向对象的指针,但不会增加对象本身的引用计数。

import weakref
class Data(object):
    def __init__(self, value, owner):
        # self.owner = owner
        self.owner = weakref.ref(owner)  # 更改为
        self.value = value

    def __str__(self):
        # return "%s's data, value is %s" % (self.owner, self.value)
        # 更改为,注意调用时要加括号
        return "%s's data, value is %s" % (self.owner(), self.value)

    def __del__(self):
        print('in data.__del__')


class Node(object):
    def __init__(self, value):
        self.data = Data(value, self)

    def __del__(self):
        print('in Node.__del__')


node = Node(100)
del node
input('wait....')

运行结果

in Node.__del__
in data.__del__
wait.... 

相关文章

  • 如何在环形数据结构中管理内存

    使用标准库weakref,它可以创建一种能访问对象但不增加引用计数的对象若引用通过循环引用来解决这个问题,本质上说...

  • 5. Disruptor 高性能解析

    1. 数据结构-内存预加载机制 数据结构层面:使用环形结构、数组、内存预加载RingBuffer使用数组Objec...

  • 2021-10-27 内存管理--自动释放池(AutoRelea

    1.内存管理 内存布局 内存管理方案(更好的简述内存管理方案相关的问题,就要明白他们的数据结构) 数据结构 ARC...

  • iOS 内存管理

    在开发中,内存管理是一个必要的技能,研究iOS 开发,我们通过内存布局、内存管理方案、数据结构、ARC/MRC、引...

  • 数据结构(转载)

    数据结构的本质就在于:如何将现实世界中各种各样的数据放入到内存中,并且如何在内存中操作这些数据,如何评价这些存储方...

  • 内存管理相关面试问题

    本文主讲内存管理相关面试问题,包括内存布局、内存管理方案、数据结构、ARC&MRC、引用计数管理、弱引用管理、自动...

  • [iOS面试]第4章 内存管理相关面试问题

    本文主讲内存管理相关面试问题,包括内存布局、内存管理方案、数据结构、ARC&MRC、引用计数管理、弱引用管理、自动...

  • iOS面试之内存管理大全

    内存管理内容如下: 内存布局 内存管理 数据结构 ARC/MRC 引用计数 弱引用 自动释放池 循环引用 1.内存...

  • iOS面试之内存管理模块

    内存管理内容如下: 内存布局 内存管理 数据结构 ARC/MRC 引用计数 弱引用 自动释放池 循环引用 1.内存...

  • 2020-03-19【内存管理】

    内存管理 内存布局 内存管理方案 数据结构 ARC & MRC 引用计数 弱引用 自动释放池 循环引用 1.内存布...

网友评论

      本文标题:如何在环形数据结构中管理内存

      本文链接:https://www.haomeiwen.com/subject/vipdjqtx.html