C中的自定义内存分配器/管理器? 哪种方法?

我正在寻找用c编写的一些(自定义)内存管理器/分配器并经历了一些文章, –

一些链接:

  • IBM – 内部内存管理
  • Valgrind – 如何影响程序使用的每个字节的内存
  • 堆栈溢出问题 – 编写自己的内存管理器
  • ned Productions – nedmalloc主页
  • 两级隔离适合(TLSF) – 网站
  • 维基百科 – 动态内存分配
  • Fourmilab – BGET内存分配器

我必须使用任何可用的沙箱来沙箱一个小的Web服务器,我在编写线程处理/分配方案的包装器时没有问题。 Apache WS使用内存池来处理内存,并且池不是持久的,它是基于请求的。 你们能提出什么建议吗? 一些好/最好的方法来解决这个问题? 我的要求如下; –

  1. (有界响应时间)分配和解除分配必须事先知道,即一些常数成本O(c),其中c是常数。

  2. 应该处理来自异构分配/解除分配大小或序列的碎片,我可以编写模式/包装器来提供相同的碎片。

真的很感谢你的帮助和想法!

应该处理来自异构分配/解除分配大小或序列的碎片,我可以编写模式/包装器来提供相同的碎片。

为避免碎片,您必须使用混合块分配策略。 这里的混合意味着不同于具有单个大小的元素块的不同大小的元素块,即分配器(或其周围的包装器)应该保持不同大小的元素(小,中和大等)的块。 所有分配请求应向上舍入到最近的块边界。 该策略应确保您不会受到外部碎片的影响,但可能导致内部碎片化。 您可以在以下链接中找到更多信息:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

只需在列表中添加一个

Google Performance Tools

它显着提高了内存分配性能,并具有CPU和内存分析器。 他们的Thread-Caching Malloc实现对于multithreading应用程序来说非常有效。