zoukankan      html  css  js  c++  java
  • python的内存管理机制

    参考了网上的一些博客,链接如下:

    https://www.cnblogs.com/geaozhang/p/7111961.html

    这里总结一下python的内存管理机制:

    python利用“引用计数”实现一种较为简单的“垃圾回收机制”,且扫描时使用“分代回收”提高扫描效率,且回收站称为“内存池”;

    (1)引用计数:

    简而言之 ,就是在Python中,每个对象都有指向该对象的引用总数---引用计数,当某个对象的引用计数为0时,我们就可以考虑将其进行垃圾回收了;

    (2)垃圾回收机制:

    即是对上面的引用计数为0的对象进行回收,当然回收的时候采用了一个分代回收的机制,帮助提高扫描的效率。另外,Python中的垃圾回收不是直接释放掉,而是将其回收到内存池中,以备下次使用;

    (3)内存池:

    垃圾回收站,相当于一个金字塔结构,如下:

    第3层:最上层,用户对Python对象的直接操作

    第1层和第2层:内存池,有Python的接口函数PyMem_Malloc实现-----若请求分配的内存在1~256字节之间就使用内存池管理系统进行分配,调用malloc函数分配内存,但是每次只会分配一块大小为256K的大块内存,不会调用free函数释放内存,将该内存块留在内存池中以便下次使用。

    第0层:大内存-----若请求分配的内存大于256K,malloc函数分配内存,free函数释放内存。

    第-1,-2层:操作系统进行操作

     注意:

    python的这种引用计数还有一个问题就是“孤立引用环”的情况,如下:

  • 相关阅读:
    代码格式化[转]
    ASP.NET错误大杂烩
    Web考勤管理系统 .net 2005 开发
    Ftp 类
    c#中Split等分割字符串的几种方法
    强大的firebug 使用 介绍
    一页面多个文本框回车提交不同事件问题解决
    Ajax电子书下载 发现的好东东贴上了
    编程技术书籍[转]
    推荐下权威的《IT十年经典书系列》1打
  • 原文地址:https://www.cnblogs.com/zf-blog/p/10026681.html
Copyright © 2011-2022 走看看