码迷,mamicode.com
首页 > 编程语言 > 详细

Memory pool (线程池) 与 malloc/free

时间:2015-08-27 07:07:11      阅读:179      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!