目录结构
- 内存池简介
- 介绍分析内存池改进及所使用技术
- 如何配合STL容器
- 性能测试
- 如何使用
内存池简介:
关于内存池的介绍,好文很多(这里,这里,这里,还有这里…)。在如今的PC机器上,内存池的作用也没有那么明显了,操作系统对内存的管理已经相当不错。但,为什么还需要内存池呢?两点:1. 减少内存管理负担,提升性能。(比如,在进行密集型算法前申请足够内存内存,然后使用,最后统一释放) 2.减少页面错误(页面错误是由虚拟内存与物理内存交换导致的),减少内存碎片,提高性能。
介绍分析内存池改进及所使用技术:
该套内存池组件是由SGI内存改造而来,其原理请参考《STL源码剖析》,或者参阅这里,借用一幅图来说明
在此基础上,我增加了几个重要的改进:
- 增加模板参数是否为多线程,根据该参数判断是否需要使用Lock及变量是否需要volatile修饰。
- 增加模板参数分配区块上限,默认为256。
- 增加模板参数分配内存策略,提供三种分配方式:VirtualAlloc、HeapAlloc、malloc。
- 增加对已申请内存管理,集中释放。
在此,讲下内存分配策略的选择。