博客园  :: 首页  :: 新随笔  :: 管理

3.1.2 内存池

Posted on 2023-03-15 07:06  wsg_blog  阅读(12)  评论(0编辑  收藏  举报

Linux C/C++服务器

内存池

内存池只能降低内存碎片的产生,并不会减少内存泄漏的风险

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

内存池的结构有很多,每个应用都有不同的场景,根据不同的场景会设计出各种各样的内存池

内存

软件工程师,只要在操作系统以上的编程,所说的内存都是虚拟内存,基本上不会操作物理内存

堆:我们可以用malloc和free进行操作,内存池中管理的内存就是指的堆上的内存

场景

我们做一个可以上传文本和图片的论坛,使用epoll模型,为其中的网络缓存数据rbuffer与wbuffer创建一个内存池

  • 小块数据
    字符数据,比如聊天信息,文本留言等
  • 大块数据
    文件数据,图片数据等

内存池代码