爱彼迎15秒广告bgm:什么是内存池?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 07:33:56
什么是内存池?
当我下载1G大的电影文件是时,大约过了4分钟候,速度变为0KB/S,自动断线,我尝试了许多次也是过了4-5分钟断线,我是用比特精灵下的。这是为什么?是比是我的moden有问题?

通常,我们都采用NEW或者malloc动态申请内存。一般来说,少量的操作不会造成什么影响,但是,如果我们频繁去申请内存块,会造成效率上的损失,更有甚者,我造成内存碎片的存在,从而影响系统的效率(所有程序都可能受到影响),一种最常见的解决办法就是一次性申请一个大点的内存块,每次需要的时候就"切"一块下来用,如果该内存块不够才去申请内存。这种技术叫做内存池。一般来说,内存池对于每次申请固定大小的内存的应用(比较频繁)会比较有好处。

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

详细:

  1. 内存池通常习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。

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

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

楼上的精辟啊!