内存池
内存池原理说明本文是对网上看到的几份相关文档的简单总结
问题主要有两个问题
内存申请与释放所引起的性能损失问题c的malloc/free,c++的new/delete这类内存申请与释放涉及到以下问题
申请时寻找合适的内存块,根据不同的算法有不同的方案
分配不小于申请时大小
分配能分配的最大内存块
分配最接近申请内存大小的内存块
进一步分割内存块到合适大小
释放时对内存进行整理,例如
合并连续内存块
多线程问题
综上,调用库中的内存分配函数,本身就相对复杂,可见,如果应用程序频繁地在堆上分配和释放内存,在比较恶劣的情况下会极大的拖慢程序,进而导致性能的损失。
内存碎片问题上面说到的频繁内存申请与释放除了本身运行会很耗时之外还会引起内存碎片问题。即连续的内存空间被分割不同大小的内存分割出去,内存空间不再连续,而是碎片化的假如这时再申请一块内存,尽管剩余内存的总和可能大于所要分配的内存大小,但系统就找不到连续的内存,也就是足够大的内存块,所以导致分配错误。
原理内存池技术是一种应用程序自己对内存管理的方案,又可叫批发零售模型(不确定),一般有以下特性
提前申请在程序真正 ...