美文网首页工作生活
python 内存管理-深入底层

python 内存管理-深入底层

作者: 大白python | 来源:发表于2019-07-01 17:06 被阅读0次
    python 内存管理-深入底层

    对于一切以C/C++语言为基础的语言,都离不开对内存的管理。

    python底层解释权是C语言,它内部有一套自已的内存管理方案。

    这套管理方案,从表层代码去理解,即是python一切皆对象objcet,标记于名称name来参与程序运作;创建一个区域a作对象,标记url;参与运算后,创建一个新的区域b存放运算结果,重新将标记url关联到新区域b,区域a或已释放。

    这套管理方案,从底层框架初步去理解,即是会经过多层申请,图示有6层。也就是说,要创建一块区域来存对象,需要经过6层申请。

    python 内存管理-深入底层

    现咱初步了解这6层申请的步骤:

    • 最底层开始,也就是图中的 -2 层,就是原始的物理存储,包含主存与二级存储;

    • 到-1 层是我们的操作系统层,系统内核负责对物理存储进行管理和分配;

    • 来到 0 层,这一层负责向操作系统申请内存,典型的如 C 语言的 malloc 库,Python 运行时需要的内存最终要通过这一层从操作系统申请;

    • 0 层往上才是 Python 运行时的内存管理层级。

    • 第 1 层中提供的PyMem 相关 API 主要是为了屏蔽不同平台 malloc/free 的差异,比如对于 malloc(0),有的系统返回 NULL,有的系统返回一个指针但是指向的地方没有内存。解决这个问题的方法简单粗暴,就是不允许分配 0 内存,至少分配 1,PyMem_MALLOC(0) 会被转化成 malloc(1)。

    • 第 2 层从第 1 层获取内存,它会组织,及分配给第 3 层的各种对象,以及各种垃圾回收,这也是咱刚说的表层内存管理方案的理解。

    PS:我大白,先理解python内存管理到此阶段,更深入的底层理解,在深入学习python后再来学了,毕竟现重点是基础。

    100分大神,80分大牛,60分大白,能用,够用,就好

    相关文章

      网友评论

        本文标题:python 内存管理-深入底层

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