首页 文章

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

提问于
浏览
14

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

一些链接:

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

必须事先知道

  • (有界响应时间)分配和解除分配,即一些常数成本O(c),其中c是常数 .

  • 应该处理来自异构分配/解除分配大小或序列的碎片,我可以编写schema / wrapper来提供相同的碎片 .

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

2 回答

  • 2

    只需在列表中添加一个

    Google Performance Tools

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

  • 1

    应该处理来自异构分配/解除分配大小或序列的碎片,我可以编写schema / wrapper来提供相同的 .

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

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

相关问题