垃圾回收机制

释放双眼,带上耳机,听听看~!

描述

以引用计数为主,分代收集为辅

如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存

引用计数的缺陷是循环引用的问题

class ClassGc(object):
    def __init__(self):
        print('对象产生:{0}'.format(id(self)))

    def __del__(self):
        print('对象删除:{0}'.format(id(self)))


def f0():
    """
    对象产生后,马上删除,引用由1变成0,内存被回收
    """
    while True:
        c1 = ClassGc()
        # del c1


def f1():
    """ 一直在被引用,不会被回收 """
    l = []
    while True:
        c1 = ClassGc()
        l.append(c1)
        print(len(l))


if __name__ == '__main__':
    f1()

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧