python中分为大内存和小内存:

  1. 大内存使用malloc进行分配
  2. 小内存使用内存池进行分配
  3. python的内存池(金字塔):
    1. 第三层:最上层,用户对python的直接操作
    2. 第一层和第二层:内存池,有python的接口函数PyMem_Malloc实现 — 若请求分配的内存在1-256字节之间就使用内存池管理系统进行分配,调用malloc函数分配内存,但是每次只会分配一块大小为256k的大块内存,不会调用free函数释放内存,将该内存块留在内存池中以便下次使用。

堆内存和栈内存

对象的本质就是一个内存块,拥有特定的值,支持特定类型的相关操作

在python中,变量也称为对象的引用,因为,变量存储的就是对象的地址,变量通过地址引用了对象

变量位于栈内存,对象位于堆内存

是一种连续的数据结构,具有先进后出的特性

内存空间由操作系统自动分配和释放

栈溢出

由程序自动向操作系统申请分配以及回收,速度快,使用方便,但程序员无法控制。若分配失败,则提示栈溢出错误。

是一种非连续的树形存储结构,每个节点有一个值,整棵树是经过排序的。特点是根节点的值最小(或最大),且根节点的两个子树也是一个堆。常用来实现优先队列,存取随意

内存空间手动申请和释放,申请慢,且必须由程序员销毁