我正在寻找一些用 c 编写的(自定义)内存管理器/分配器,并浏览了一些文章,-
一些链接:
- IBM - Inside memory management
- Valgrind - How to Shadow Every Byte of Memory Used by a Program
- Stack Overflow Question - Write your own memory manager
- ned Productions - nedmalloc Homepage
- Two-Level Segregate Fit (TLSF) - Website
- Wikipedia - Dynamic memory allocation
- Fourmilab - The BGET Memory Allocator
我必须使用任何可用的服务器对小型 Web 服务器进行沙箱处理,并且我在编写线程处理/分配方案的包装器时没有问题。 Apache WS 使用内存池来处理内存,并且池不是持久的,它是基于每个请求的。你们能推荐点什么吗?一些好的/最好的方法来解决这个问题?我的要求如下;-
(有界响应时间)分配和解除分配必须提前知道,即一些 恒定成本 O(c),其中 c 是 常数。
来自异构的碎片 分配/取消分配大小或 应该处理序列,我可以编写模式/包装器来提供 一样的。
非常感谢您的帮助和想法!
最佳答案
Fragmentation from heterogeneous allocation/de-allocation sizes or sequences should be handled, I can write the schema / wrapper to provide the same.
为避免碎片化,您必须使用混合 block 分配策略。这里的混合意味着不同大小的元素 block ,而不是具有单一大小的元素 block ,即分配器(或围绕它的包装器)应该维护不同大小的元素 block (小,中,大等)。所有分配请求都应四舍五入到最近的 block 边界。此策略应确保您不会遭受外部碎片,但会导致内部碎片。您可以在以下链接中找到更多信息:
http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf
关于C 中的自定义内存分配器/管理器?哪种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920453/