在高并发内存池的设计中,"大页内存管理"和"元数据开销优化"是两个核心痛点:原生 malloc/free 在大内存分配时频繁触发系统调用,而 new/delete 管理内存池元对象(如 ThreadCache、span)会引入额外性能损耗。本文基于 TCMalloc 思想,拆解高并发内存池中大页内存的申请/释放逻辑,以及如何通过**定长内存池(ObjectPool)**彻底脱离 new/delete,实现元数据的零开销管理。
一、背景:为什么要单独处理大页内存?
在高并发内存池的三级缓存架构(ThreadCache→CentralCache→PageCache)中,我们将内存分为"小对象(≤256KB)"和"大对象(>256KB)":
- 小对象:走三级缓存,利用线程私有、桶锁、批量分配降低竞争
- 大对象:若仍走缓存,会导致"缓存污染"(大内存占满缓存,小对象无空间可用),且大内存分配频率低,缓存收益有限

