内存池化技术3358www.Sina.com/是计算机技术中常用的设计模型,包括池。 常用的池技术包括内存池、线程池和连接池,使用最多的是内存池和线程池。
内存池程序中需要经常使用的核心资源先申请出来,放到一个池内,由程序自己管理,这样可以提高资源的使用效率,也可以保证本程序占有的资源数量通常习惯使用API (如new/delete/malloc/free )申请分配和释放内存。 因此,长时间运行程序会导致请求的内存块大小不稳定,从而导致频繁使用会产生大量内存碎片,并降低程序和操作系统的性能。内存池(Memory Pool)是一种动态内存分配与管理技术
为什么需要内存池? 解决内存碎片问题
假设系统按顺序分配了16、16、4、8和8个字节,释放了16和8个字节并返回给系统。 (红色表示还没有返还给系统。 )然后,堆空间当前将16字节空间和8字节空间分开。 这是因为如果用户尝试申请24字节的空间,系统将无法为用户分配连续的空间。 这就是内存碎片的问题。
申请效率问题举个例子:
你作为课程的代表每天去给老师交作业。 你一次去交xdddxtd的作业。 这样的话,你只需要跑一次就能解决问题。 但是如果有同学忘记交了,交作业后,他们就零散地交给你,你得一次又一次地去给老师交作业。 效率变低了,频繁地去给老师交作业。 那么,完成一次xdddxtd的工作一定能更有效率。
内存池则是在真正使用内存之前,先申请分配一大块内存(内存池)留作备用,当我们申请内存时,从池中取出一块动态分配的内存,释放内存时,再将我们使用的内存释放到我们申请的内存池内,再次申请内存池也可以再取出来使用。并且,尽量与周边的内存块合并。若内存池不够时,则自动扩大内存池,从操作系统中申请更大的内存池