python的垃圾回收机制

 

垃圾回收机制(GC)(引用计数为主,隔代回收为辅):

 

1、引用计数机制
引用计数解决不了循环引用问题,如:

class A():

    pass

def abc():

    while 1:

        c1 = A()

        c2 = B()

        c1.t = c2

        c2.t = c1

        del c1

        del c2

abc()

附:引用计数详解

一、导致引用计数加1的情况
1、对象被创建,例如:a=33 (注意:如果只创建对象,不用变量引用,他并不会加一。这里是用a指向33所以才会加1)
2、对象被引用,例如:b=a
3、对象被作为参数,传入到一个函数中,例如func(a)
4、对象作为一个元素,存储在容器中,例如list=[a]

二、导致引用计数减一的情况
1、对象的别名被显式销毁,例如del a
2、对象的别名被赋予新的对象,例如a=23
3、一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量(全局变量不会)
4、对象所在容器被销毁,或从容器中删除对象

 

 

2、隔代回收
解决了循环引用的问题。

 

posted @ 2019-02-01 11:40  白桦林_HK  阅读(247)  评论(0编辑  收藏  举报