什么是内存管理
内存是数据存储的介质,其访问速度比硬盘快,但是容量相对更小,且断电后数据会丢失。由于内存的种种性质,其成为了计算机开机后访问数据的最佳位置,操作系统或者用户进程所访问的数据大都也都是在内存上。
内存管理实际上管理的是内存物理介质的状态。内存作为一种物理介质,每一个bit都是0/1两种状态,它并不清楚自身存储的数据含义,甚至也并不清楚自身是否被使用了。
通常来说,操作系统为我们管理了作为物理介质的内存,即使用虚拟内存和分页的方式,使得我们的用户进程能够访问连续的/不受物理内存大小限制的虚拟地址空间。其次,c运行库中的malloc
/calloc
函数在操作系统层面之上提供了堆空间内存分配的接口。而python在此基础之上,为所有PyObject
提供了统一的内存分配/管理接口。
为什么要进行内存管理
个人认为,主要原因是为了减少内存分配调用而产生的开销;此外,通用的内存管理也方便在此基础上进行垃圾回收等其他操作。当调用malloc
函数时,我们通常会陷入内核进行系统调用,甚至会产生缺页异常从而分配新的页并更新页表,这样的操作是相对费时的。python内存管理的核心目的就是减少小对象的内存分配次数,从而提高程序运行性能。