2020-01-10 06:46
⁄ 工业·编程
⁄ 共 2116字
和SGI版的STL一样,leveldb内存分配也采用了memory pool的整理方式,减少内存不断分配释放过程中造成的空间零碎化和浪费。leveldb的内存池实现可参见arena.h和arena.cc,有关内存池的测试代码有arena_test.cc。arena内存池是leveldb的关键组件,是很多其他功能模块(class)的成员,在cache、memtable、table组件中均有使用。
先看arena的成员变量:
private:
// Allocation state
//当前内存池的池顶
cha...
Arena, leveldb, 内存池阅读全文
2020-01-09 06:42
⁄ 工业·编程
⁄ 共 3254字
一. 什么是内存池?
内存池(Memory Pool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocks allocation)。
通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
内存池是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内...
Arena, 内存池阅读全文