内存池设计基本思路
设计内存池,以减少因频繁调用malloc造成中造成的内存碎片
基本结构
- 选取key提升malloc效率:
对于一块堆内存,申请时指定,而释放时指定,因此,采用内存大小做key,malloc时更块,采用地址做key,free时更快。但在实际项目中,malloc的效率比free的效率更重要,因此采用大小做key。
缺点:
- 查找慢
- 小块回收麻烦,都不是挨着的
- 内存表的所有节点都是碎片,它们存在哪里,要怎么释放
使用场景:
- 全局内存池:整个程序就用一个内存池 (推荐jemalloc、tcmalloc)
- 一个长连接做一个内存池 (不用回收小块,反正时间不长)
- 消息或者短连接不用做内存池,浪费
内存池设计
这里只针对一个长连接做一个内存池,小内存块不立即释放的,先上图:
参考链接
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!