Python的内存管理


一、内存管理是什么

首先 内存管理在wiki上的定义为: 内存管理是应用于计算机内存的一种资源管理形式。 内存管理的基本要求是提供一种方法,可根据它们的请求为程序动态分配内存的一部分,并在不再需要时将其释放以供重用。

那么, 简单的理解的话, 内存管理就是控制内存的释放和内存的分配


二、Python中的内存管理怎么实现的

在看完了Python官方文档后, 得出了两个小结论

  1. Python通过内部的Python内存管理器来管理一个包含所有Python对象和数据结构的堆
  2. 不同数据结构在堆中的内存管理方式不一样

源码贴的实现层次如图(源码过于难啃)
Python的内存管理

这样子的说明可能还有点云里雾里, 但是如果结合Python的实现方式就可以清楚了, python语言的特点就是万物皆对象, 所有的数据结构都继承自一个Object的类, 并且这个类仅包含对象的引用计数和指向相应类型对象的指针。

这样子配合就好理解了, 引用计数器就是用来管理内存的释放, 指向相应类型对象的指针就是用来选择对应的内存分配器来分配内存


三、这种内存管理的好处

使用堆分配内存, 满足Python动态语言的特点; 使用引用计数器实现自动回收内存, 而不用像C一样手动回收内存

参考文章

Python官方连接
Real Python
Python中的内存管理和示例
内存分配源码地址