python 内存管理-深入底层

图片发自简书App

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

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

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

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

图片发自简书App

现咱初步了解这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分大白,能用,够用,就好
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,138评论 1 32
  • 内存是计算机非常关键的部件之一,是暂时存储程序以及数据的空间,CPU只有有限的寄存器可以用于 存储计算数据,而大部...
    dreamer_lk阅读 1,244评论 2 10
  • 内存的历史 现代的intel处理器可以追溯到最早期的intel芯片。1.8085处理器充分利用了芯片整合技术,它将...
    Mr_Bluyee阅读 763评论 0 0
  • 相信大家在学习C语言的时候,malloc是最早遇到的几个方法之一,这里就来深入的了解下,macOS/iOS中用户空...
    码农苍耳阅读 8,118评论 2 14
  • 欲壑难填
    PearlParis阅读 151评论 0 0