美文网首页程序员
垃圾回收机制,引用计数

垃圾回收机制,引用计数

作者: 初幕 | 来源:发表于2018-05-11 20:15 被阅读0次

    当引⽤计数为0时,该对象⽣命就结束了。

    计数机制的优点:

    1、简单

    2、实时性:⼀旦没有引⽤,内存就直接释放了。不⽤像其他机制等到特定时机。实时性还带来⼀个好处:处理回收内存的时间分摊到了平时。

    计数机制的缺点:

    1、维护引⽤计数

    2、消耗资源循环引⽤

    list1    =   []

    list2    =   []

    list1.append(list2)

    list2.append(list1)

    list1与list2相互引⽤,如果不存在其他对象对他们的引用,list1与list2的引用计数也仍然1,所占⽤的内存永远无法被回收,这将是致命的。 对于如今的强⼤硬件,缺点1尚可接受,但是循环引⽤导致内存泄露,注定python还将引⼊新的回收机制。(分代收集)

    .垃圾回收机制

    Python中的垃圾回收是以引用计数为主,分代收集为辅。

    1、导致引用计数+1的情况

    对象被创建,例如a=23      

     对象被引⽤,例如b=a   

    对象被作为参数,传⼊到⼀个函数中,例如func(a)       

    对象作为⼀个元素,存储在容器中,例如list1=[a,a]   

    2、导致引用计数-1的情况

    对象的别名被显式销毁,例如del    a      

     对象的别名被赋予新的对象,例如a=24   

    ⼀个对象离开它的作⽤域,例如f函数执⾏完毕时,func函数中的局部变量(全局变量不会)   

    对象所在的容器被销毁,或从容器中删除对象   

    3、查看一个对象的引用计数

    import    sys

    a    = "hello    world"

     sys.getrefcount(a)

    可以查看a对象的引用计数,但是⽐正常计数⼤1,因为调⽤函数的时候传入a,这会让a的引用计数+1

    4.有三种情况会触发垃圾回收:

    当gc模块的计数器达到阀值的时候,自动回收垃圾

    调⽤gc.collect(),手动回收垃圾

    程序退出的时候,python解释器来回收垃圾

    相关文章

      网友评论

        本文标题:垃圾回收机制,引用计数

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