【内存池系列】我的内存池设计(更新中)

来源:互联网 发布:编程儿童产业 编辑:程序博客网 时间:2024/06/08 08:11

读罢多篇关于内存池的文章,本菜鸟终于准备开始思考设计我的内存池了,以下正式开始。

设计目的:

为了针对内存数据库中的内存分配问题。

设计思路:

通常我们在程序中不同地方频繁new的时候,就容易产生内存碎片,效率低下,并且还有可能忘记释放内存,造成内存泄露导致程序崩溃。(为什么会这样,见我前几篇转的文章,或者自己百度去)为了解决这些问题,我们在分配内存的时候可以采用内存池技术。然而内存池的实现又分多钟,在阅读了相关文章之后,我总结出了我自己需要的内存池。要求如下:

1、能够展示内存池内数据的使用情况;

2、能够快速实现内存的回收和利用;

3、需要对多线程提供支持;

4、要求能够进行碎片整理;

5、异常检测std:bad_alloc。


同时,在设计过程中存在一些难点,如下:

1、控制内存池有序的增长和内存块高效的回收;

2、多线程下的内存申请同步;

3、高效的遍历所有内存块;

4、监控内存泄露;

5、内存碎片的整理。


同时,常见的fixed-pool只提供一种大小的内存块,即单级链表内存池,而我需要我的是多级链表内存池,能够分配8,16,32,64,128,256,512字节大小的内存块,大小相同的内存块将形成同一链表,即所谓的多级链表。所有链表的头指针以数组存储。

http://blog.163.com/xuanmingzhiyou@yeah/blog/static/14247767620123138564028/

(明日更新...)