• 垃圾回收机制


    Python的垃圾回收机制用一句话来形容就是:引用计数为主,标记-清楚和分代收集两种机制为
    辅的策略

    1.引用计数
    例子:
    a = 123
    b = 123

    这时候 123 开辟出的内存空间就被引用了两次,计数为2,这就是引用计数
    如果 b 的值被改变,这时候对于123的引用就计数为1,如果a 的值也被改变,这时候123 就会
    被回收掉

    优点
    简单实时,一旦没有引用,内存就直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处:处理回收内存的时间分摊到了平时。
    缺点
    维护引用计数消耗资源,会造成循环引用导致无法回收,造成内存泄露


    2.标记-清楚

    标记-清除机制,顾名思义,首先标记对象(垃圾检测),然后清除垃圾(垃圾回收)

    3.分代收集

      1.分代技术是一种典型的以空间换时间的技术,这也正是java里的关键技术。这种思想简单
    点说就是:对象存在时间越长,越可能不是垃圾,应该越少去收集。

      2.这样的思想,可以减少标记-清除机制所带来的额外操作。分代就是将回收对象分成数个
    代,每个代就是一个链表(集合),代进行标记-清除的时间与代内对象

      3.存活时间成正比例关系。

      4.从上面代码可以看出python里一共有三代,每个代的threshold值表示该代最多容纳对象
    的个数。默认情况下,当0代超过700,或1,2代超过10,垃圾回收机制将触发。

      5.0代触发将清理所有三代,1代触发会清理1,2代,2代触发后只会清理自己。

  • 相关阅读:
    QuickFlash
    第五课:类的封装性 M
    第六课:构造方法、匿名对象 M
    第四课:面向对象(基础) M
    第八课:引用传递 M
    第七课:String类 M
    第二课:数组 M
    第三课:方法 M
    ASP .Net的应用程序域(The Application Domain)
    js 解数独程序
  • 原文地址:https://www.cnblogs.com/666666pingzi/p/10963206.html
Copyright © 2020-2023  润新知