首页 > 编程语言 > 详细

Memory pool (线程池) 与 malloc/free

时间:2015-08-27 07:06:42      阅读:321      评论:0      收藏:0      [点我收藏+]

什么是内存池

(Memory Pool)是一种内存分配方式。

内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是,使得内存分配效率得到提升。

在内核中有不少地方内存分配不允许失败. 作为一个在这些情况下确保分配的方式, 内核开发者创建了一个已知为内存池(或者是 "mempool" )的抽象. 一个内存池真实地只是一类后备缓存, 它尽力一直保持一个空闲内存列表给紧急时使用.

 

malloc/free的缺点

通常我们习惯直接使用new、malloc等API申请分配内存,这些函数通常是线程安全的,可是,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能(malloc/free函数会导致用户态和核态的切换,加锁解锁等操作)。

 

顺带马克一下好文:http://m.blog.csdn.net/blog/chhuach2005/23863625

Memory pool (线程池) 与 malloc/free

原文:http://www.cnblogs.com/sunfishgao/p/4762183.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!