内存池设计基本思路

内存池设计基本思路

设计内存池,以减少因频繁调用malloc造成中造成的内存碎片

基本结构

  • 选取key提升malloc效率:
    对于一块堆内存,申请时指定,而释放时指定,因此,采用内存大小做key,malloc时更块,采用地址做key,free时更快。但在实际项目中,malloc的效率比free的效率更重要,因此采用大小做key。

20221225204508

缺点:

  • 查找慢
  • 小块回收麻烦,都不是挨着的
  • 内存表的所有节点都是碎片,它们存在哪里,要怎么释放

使用场景:

  • 全局内存池:整个程序就用一个内存池 (推荐jemalloc、tcmalloc)
  • 一个长连接做一个内存池 (不用回收小块,反正时间不长)
  • 消息或者短连接不用做内存池,浪费

内存池设计

这里只针对一个长连接做一个内存池,小内存块不立即释放的,先上图:

内存池设计基本思路

参考链接

来源:曾格0

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月23日
下一篇 2022年11月24日

相关推荐