我知道有一个用于用户应用程序的分配器,而不是在 HP-UX 上处理大量小块分配 link text在 Windows XP 上 Low-fragmentation Heap .在 HP-UX 上,可以调整分配器,在 Windows XP 上,它认为大小小于 16 K 的 block 是小的。
我的问题是我找不到任何关于这种用于在 Linux(实际上是 RedHat Linux)上运行的用户程序的分配器的信息。如果有这样的分配器,我实际上想知道它可以处理的最大块大小。
更新
我找到了 jemalloc ( http://www.canonware.com/jemalloc/ )。它处理小型、大型和巨大的 block :http://www.canonware.com/download/jemalloc/jemalloc-latest/doc/jemalloc.html#size_classes .
最佳答案
Redhat Linux 或任何基于 Linux 的发行版大多使用 DL-Malloc ( http://gee.cs.oswego.edu/dl/html/malloc.html )。
正如 Kirill 指出的那样,对于用户应用程序,如果由于较小的 block 而导致碎片较多,则最好使用单独的内存分配器。
如果用户应用程序很小,您可以尝试使用 C++ placement new/delete 来覆盖默认的分配器模式。 ( http://en.wikipedia.org/wiki/Placement_syntax )
关于c++ - Linux(或 RedHat Linux)上的小块分配器以避免内存碎片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2415373/