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的这种引用计数还有一个问题就是“孤立引用环”的情况,如下:

  • 相关阅读:
    文件拖拽上传
    30天自制操作系统笔记(第三天)
    PAT 1040到底有几个pat
    pat 1039 到底买不买
    pat 1038 统计同成绩学生
    pat 乙级1034
    pat 乙级1022
    pat 乙级1009
    pat 乙级1008
    pat 乙级1002
  • 原文地址:https://www.cnblogs.com/zf-blog/p/10026681.html
Copyright © 2011-2022 走看看