lugj 发表于 2008-09-09 21:05

内存池测试

附加为简单内存池实现,在linux下测试通过

lugj 发表于 2008-09-09 21:41

刚刚自己搜索发现一篇文章

http://blog.csdn.net/tingya/archive/2005/12/08/547322.aspx

感觉我上面程序里面使用的内存节点跟上面文章说的apache的有点相似    :em06:
哎...

eveson 发表于 2008-09-09 23:36

保留下来,明天调试一把

duanjigang 发表于 2008-09-10 09:41

支持一下:wink:
粗略看了下代码,数据结构组织了个二级双向链表,不过有个疑问:
做这样一个内存池在实际应用中有什么优点或者方便之处?看代码是通过malloc实现的,好像没有修改
什么系统特性,不知道最大能开多少内存?个人觉得好像没多大便利之处,跟手动malloc差别不大。
呵呵,可能没看懂,希望LZ或者熟悉内存池的朋友介绍下?
我觉得用共享内存和windows的内存映像文件做个内存池倒不错,多平台支持。

lugj 发表于 2008-09-10 11:27

回复 #4 duanjigang 的帖子

简单点说在开始的时候申请的是一大块内存,能够存放多个对象,下次就不再需要调用实际的malloc,而是在已经分配的大块内存上直接获取

duanjigang 发表于 2008-09-11 11:06

原帖由 lugj 于 2008-9-10 11:27 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
简单点说在开始的时候申请的是一大块内存,能够存放多个对象,下次就不再需要调用实际的malloc,而是在已经分配的大块内存上直接获取
加油,希望看到比较成功的应用。

flw2 发表于 2008-09-11 11:13

我一直没明白内存池有什么用,我觉得malloc就足够了,malloc非常智能
LZ能否讲讲你这样跟直接malloc+free有什么优势

MMMIX 发表于 2008-09-11 11:37

原帖由 flw2 于 2008-9-11 11:13 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
我一直没明白内存池有什么用,我觉得malloc就足够了,malloc非常智能
LZ能否讲讲你这样跟直接malloc+free有什么优势
内存池可以根据自己应用的需要管理内存,避免大量 malloc/free 操作造成的内存碎片问题。例如程序中要不断的交叉分配大量很小和很大的对象,那么用自定义的内存池可能就很有帮助了。其实,你可以将内存池想象成一个 cache,内核中对一些比较大而且又经常要分配释放的数据结构也是这么做的。

duanjigang 发表于 2008-09-11 13:17

我现在也很少用malloc或者new,要么直接定义数组,要么开几百兆共享内存

lugj 发表于 2008-09-11 15:18

http://www.ibm.com/developerworks/cn/java/l-pool/
页: [1] 2
查看完整版本: 内存池测试