MemPool - 内存池

释义

MemPool (Memory Pool)中文翻译为“内存池”。它是一种用于分配大量大小相同的小块内存的技术。该技术可以极大加快内存分配/释放过程,达到O(1)级别,是一个被广泛使用的内存管理技术。

优势

  • MemPool技术的内存分配、释放速度非常快,达到O(1)级别。其备受推崇的原因亦在于此。

缺陷

  1. 只能分配特定字节长度的内存。也就是说,MemPool不是通用内存管理器1
  2. MemPool技术可能导致内存占用只增不减。目前还没有非常有效的办法去避免这种情况的发生2

原理

参考《内存池(MemPool)技术详解》。

问题拓展

mempool, allocator与vector

  • 在网上看到的一个问题:以前写的一个mempool以及它的allocator,用在set map list上面一直都没问题, 但是今天用到vector时挂了。(参见:http://www.cpper.com/c/t3846.html

问题分析:其实这是典型的mempool误用。mempool技术主要用于管理小对象的内存。它不是一个通用的内存管理器。真把它用于作为vector的allocator,那么性能必然不升反降。

page_revision: 10, last_edited: 1202472794|%e %b %Y, %H:%M %Z (%O ago)
Unless stated otherwise Content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License