# 高并发内存池 **Repository Path**: lzf7240/ConcurrentMemoryPool ## Basic Information - **Project Name**: 高并发内存池 - **Description**: google高并发内存池 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-27 - **Last Updated**: 2025-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 高并发内存池 #### 介绍 当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称 Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存 分配相关的函数(malloc、free)。 我们这个项目是把tcmalloc最核心的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就 是学习tcamlloc的精华,这种方式有点类似我们之前学习STL容器的方式。但是相比STL容器部分, tcmalloc的代码量和复杂度上升了很多,大家要有心理准备。当前另一方面,难度的上升,我们的收获 和成长也是在这个过程中同步上升。 另一方面tcmalloc是全球大厂google开源的,可以认为当时顶尖的C++高手写出来的,他的知名度也是 非常高的,不少公司都在用它,Go语言直接用它做了自己内存分配器。 [tcmalloc源代码](http://gitee.com/mirrors/tcmalloc) #### 软件架构 C/C++中我们要动态申请内存都是通过malloc去申请内存,但是我们要知道,实际我们不是直接去堆获 取内存的, 而malloc就是一个内存池。malloc() 相当于向操作系统“批发”了一块较大的内存空间,然后“零售”给程 序用。当全部“售完”或程序有大量的内存需求时,再根据实际需求向操作系统“进货”。malloc的实现方 式有很多种,一般不同编译器平台用的都是不同的。比如windows的vs系列用的微软自己写的一套, linux gcc用的glibc中的ptmalloc。下面有几篇关于这块的文章,大概可以去简单看看了解一下,关于 ptmalloc,学完我们的项目以后,有兴趣大家可以去看看他的实现细节。 #### 使用说明 ![输入图片说明](https://foruda.gitee.com/images/1735725798923802403/934f1072_13031815.png "屏幕截图") 1. 高并发内存池--thread cache ![输入图片说明](https://foruda.gitee.com/images/1735726007114343729/13e4d9a5_13031815.png "屏幕截图") 2. 高并发内存池--central cache ![输入图片说明](https://foruda.gitee.com/images/1735726361475429565/16fbda88_13031815.png "屏幕截图") 3. 高并发内存池--page cache ![输入图片说明](https://foruda.gitee.com/images/1735726594184847171/c767e0ab_13031815.png "屏幕截图")