# MemoryPool **Repository Path**: xtfvje/MemoryPool ## Basic Information - **Project Name**: MemoryPool - **Description**: 并发内存池 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-09-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MemoryPool #### 介紹 并发内存池 分为三个模块,thread cache,central cache ,page cache。 一个线程独享一个thread cache,这样线程从这里申请内存不需要加锁,本质上是一个由哈希映射的自由链表构成。 central cache借助单例模式,全局一个,所有线程共享,thread cache按需从central cache中获取内存对象,central cache周期性的回收thread cache中的对象。 page cache存储的内存是以页为单位存储及分配的,central cache没有内存对象时,从这里分配出一定数量的page,并切割成定长大小的小块内存,分配给central cache。page cache会回收central cache满足条件的span对象,并且合并相邻的页,组成更大的页。 缓解了内存碎片问题,提高了性能,缓解了在多线程环境下,锁竞争问题。