读罢多篇关于内存池的文章,本菜鸟终于准备开始思考设计我的内存池了,以下正式开始。
设计目的:
为了针对内存数据库中的内存分配问题。
设计思路:
通常我们在程序中不同地方频繁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/
(明日更新...)