1、高并发内存池-序章
项目介绍
这是一个CPP实现的高并发内存池,原型是谷歌的tcmalloc开源项目(Thread-Caching Malloc),既线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关函数(malloc、free)
前置需求
- C/C++
- 数据结构(链表、哈希桶)
- 操作系统内存管理
- 单例模式
- 多线程
- 互斥锁
- …
内存池简介
1、池化技术
池化技术就是程序先向系统申请过量的资源,然后自己管理,能大大提升程序的运行效率
常见的池化技术场景
- 内存池
- 线程池
- 对象池
- …
2、内存池
内存池是指程序预先从操作系统申请一块足够大内存,此后,当程序中需要申请内存的时候,不是直接向操作系统申请,而是直接从内存池中获取;同理,当程序释放内存的时候,并不真正将内存返回给操作系统,而是返回内存池。当程序退出(或者特定时间)时,内存池才将之前申请的内存真正释放。
3、内存池解决的问题
内存碎片问题
效率问题
向操作系统频繁申请内存消耗较大,内存池能够避免让程序频繁的向系统申请和释放内存
4、malloc
C/C++中动态申请内存都是通过malloc去申请内存,malloc本质也是一个内存池,原理如下:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 芝士就是菜!
评论