# Thread--Caching Malloc **Repository Path**: Axurea/thread--caching-malloc ## Basic Information - **Project Name**: Thread--Caching Malloc - **Description**: 这个项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread--Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc,free)。 这个项目是把tcmalloc最核心的框架简化后拿出来,模拟实现出了一个自己的高并发内存池,目的就是学习tcmalloc的精华。 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-04-14 - **Last Updated**: 2025-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Thread--Caching Malloc #### 介绍 这个项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread--Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc,free)。 这个项目是把tcmalloc最核心的框架简化后拿出来,模拟实现出了一个自己的高并发内存池,目的就是学习tcmalloc的精华。 #### 相关技术 C/C++、多线程编程、内存管理、数据结构(FreeList/Span/PageHeap) #### 开发环境 Visual Studio 2019 #### 核心工作 1. 三级内存池架构: 实现线程本地缓存(ThreadCache),使用 TLS 技术实现无锁分配,降低 80%+ 的锁争用; 设计中央缓存(CentralCache)通过互斥锁管理跨线程内存块回收,平衡内存利用率与并发效率; 实现页堆(PageHeap)按 8KB 页为单位向系统申请内存,支持碎片整理与大对象直接分配。 2. 高效内存管理: 采用 SizeClass 映射表(8B~256KB)对小对象分级,通过位图快速匹配最佳内存块; 实现 Span 结构体跟踪内存块状态,合并相邻空闲页减少外部碎片; 基于 FreeList 的空闲链表管理,优化内存分配/释放的 O(1) 时间复杂度。 3. 性能优化与验证: 通过 Google Benchmark 对比测试:单线程小对象分配效率较 glibc malloc 提升 3~5 倍; 支持多线程环境下 10k+ QPS 内存操作,内存碎片率降低约 40%; 实现内存泄漏检测模块,通过 Hook 机制记录未释放块信息。