我知道有一个用于用户应用程序的分配器,可以处理 HP-UX 上的大量小块分配链接文本 http://docs.hp.com/en/B9106-90010/malloc.3C.html在 Windows XP 上低碎片堆 http://msdn.microsoft.com/en-us/library/aa366750%28VS.85%29.aspx。在 HP-UX 上,可以调整分配器,在 Windows XP 上,它认为大小小于 16 K 的块较小。
我的问题是,我无法找到有关在 Linux(实际上是 RedHat Linux)上运行的用户程序的此类分配器的任何信息。如果有这样的分配器,我实际上想找到它可以处理的最大块大小。
Update
I have found jemalloc (
http://www.canonware.com/jemalloc/ http://www.canonware.com/jemalloc/). It handles small, large and huge blocks:
http://www.canonware.com/download/jemalloc/jemalloc-latest/doc/jemalloc.html#size_classes 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 http://gee.cs.oswego.edu/dl/html/malloc.html).
正如 Kirill 指出的那样,对于用户应用程序,如果由于块较小而导致碎片较多,则最好使用单独的内存分配器。
如果用户应用程序很小,您可以尝试使用 C++ 放置 new/delete ,它可以覆盖默认分配器模式。 (http://en.wikipedia.org/wiki/Placement_syntax http://en.wikipedia.org/wiki/Placement_syntax)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)