美文网首页
总结python的内存回收机制

总结python的内存回收机制

作者: 蒲编 | 来源:发表于2017-05-17 14:45 被阅读0次

python的内存回收以引用计数为主,分代回收和标记清除为辅的回收策略。

引用计数

python中一切都是对象:

 typedef struct_object {
 int ob_refcnt;
 struct_typeobject *ob_type;
} PyObject;

其中ob_refcnt就是该对象被引用的次数,每新增一个变量引用该对象,该值就增加1。

  • 在python中有这么几种方式,主动的减少对象的引用计数:
    1.del one_object.
    2.若是列表或字典中的对象,从中除去它。
    3.容器中的对象,可以del整个容器。

  • 缺点:
    1.耗费空间去存储引用计数。
    2.耗费时间去检查引用计数。
    3.需要解决循环计数问题。

标记清除

为了解决循环计数而导致的内存泄漏,python搞了一种机制,是这么个意思:
因为最终肯定每个对象都要回收的,所以最后分配的计数值和释放掉的计数值要相等,但因为存在循环引用,所以它们的差会越来越大,当差大到某一个值后,python开始遍历“某一代”上的每一个对象,发现有循环引用的对象就将它们的引用计数减一,然后继续引用计数的回收策略。

分代回收

上面提到的某一代是指对象存在时间的“年代”,它是基于这种思想,存在时间越长的对象,程序就越需要它,而某些短暂生存的中间变量则要及时释放掉。
因此,Python中有零代,一代等,越小的代释放对象就越频繁。

相关文章

  • python内存管理机制

    Python内存管理机制 Python内存管理机制主要包括以下三个方面: 引用计数机制 垃圾回收机制 内存池机制 ...

  • python学习一

    1 python 如何管理内存 对象引用计数机制,垃圾回收机制,内存池机制 一。对象引用机制 python内部引用...

  • python拾遗7 - 垃圾回收

    垃圾回收机制 相比 C++ 的手动回收内存,python 的垃圾回收机制可谓是省心省力,判断是否回收一块内存,主要...

  • 2018-11-19 python学习第三天

    1、内存回收机制: 在其他语言中需要考虑内存回收机制,垃圾数据太多会导致内存溢出。但是python语言无需考虑这点...

  • Python内存管理机制

    Python内存管理机制主要包括以下三个方面:引用计数机制 垃圾回收机制 内存池机制

  • python必知必会12

    Python 的内存机制 内存机制主要包括垃圾收集和内存管理两部分。Python 主要使用基于引用计数的垃圾回收机...

  • 面试日记--python的内存管理

    面试中被问到python的内存管理,只是说是python有自己的内存管理机制,有自己的垃圾回收机制,却不能详细作答...

  • Python Memory Management

    Python的内存管理机制可以从三个方面来讲: 引用计数 垃圾回收 内存池机制 引用计数 Python采用了类似W...

  • Python的垃圾回收机制,可变类型,不可变类型

    Python的垃圾回收机制 什么是GC(垃圾回收机制),出现的原因 GC:说白了就是内存自动管理机制.它的出现的原...

  • 总结python的内存回收机制

    python的内存回收以引用计数为主,分代回收和标记清除为辅的回收策略。 引用计数 python中一切都是对象: ...

网友评论

      本文标题:总结python的内存回收机制

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