项目介绍

这是一个CPP实现的高并发内存池,原型是谷歌的tcmalloc开源项目(Thread-Caching Malloc),既线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关函数(malloc、free)

前置需求

  • C/C++
  • 数据结构(链表、哈希桶)
  • 操作系统内存管理
  • 单例模式
  • 多线程
  • 互斥锁

内存池简介

1、池化技术

池化技术就是程序先向系统申请过量的资源,然后自己管理,能大大提升程序的运行效率

常见的池化技术场景

  • 内存池
  • 线程池
  • 对象池

2、内存池

内存池是指程序预先从操作系统申请一块足够大内存,此后,当程序中需要申请内存的时候,不是直接向操作系统申请,而是直接从内存池中获取;同理,当程序释放内存的时候,并不真正将内存返回给操作系统,而是返回内存池。当程序退出(或者特定时间)时,内存池才将之前申请的内存真正释放。

3、内存池解决的问题

内存碎片问题

内存碎片.png

效率问题

向操作系统频繁申请内存消耗较大,内存池能够避免让程序频繁的向系统申请和释放内存

4、malloc

C/C++中动态申请内存都是通过malloc去申请内存,malloc本质也是一个内存池,原理如下:

image.png