# tcmalloc青春版 **Repository Path**: zoom096/memory_pool ## Basic Information - **Project Name**: tcmalloc青春版 - **Description**: 学习tcmalloc,仿照实现的版本 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-23 - **Last Updated**: 2025-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, 内存池 ## README # 高并发内存池 #### 介绍 学习tcmalloc自行实现的青春版 #### 软件架构 环境vs2022 #### 核心成果与技术细节: 1. 三级缓存架构优化,显著提升分配吞吐量 设计并实现ThreadCache,基于TLS隔离分配器,实现小对象分配完全无锁,避免线程间竞争 CentralCache采用桶锁机制,按内存块大小分类管理,优化锁粒度,提升多线程并发调度效率。 PageCache基于自研基数树组织Span结构,支持高效页级分配与管理。 2. 碎片优化与空闲Span合并算法 采用伙伴系统动态切割Span,支持小对象按需分割,避免内存浪费。 设计Span合并机制,支持邻接空闲Span自动合并成大块,有效减少外部碎片。 实现延迟回收策略,避免频繁合并导致的额外开销,在系统空闲时批量回收优化。 3. 逆向映射加速释放路径,缩短回收延迟 基于基数树构建逆向映射表,快速定位内存块所属的Span结构,释放时无需全局遍历查找。 引入分层归还机制,小对象优先回ThreadCache,大对象释放回PageCache。 #### 核心技术描述: 1. 无锁编程:基于TLS设计线程私有池,CentralCache通过原子操作实现高效同步。 2. 基数树索引与管理:以基数树高效管理Span,支持快速查找、逆向映射及碎片归属定位。 3. 伙伴系统动态切割策略:按2的幂次拆分/合并内存块,灵活适配不同对象大小,优化利用率。 4. 碎片优化与延迟回收:设计Span整理与延迟合并策略,优化系统长期运行下的内存布局。