malloc和dlmalloc之间的区别

10

在Dalvik堆中分配内存区域时,应用程序使用dlmalloc而不是普通的malloc。为什么会使用dlmalloc,它与malloc有何不同?据我所知,在创建Dalvik虚拟机时分配Dalvik堆时,使用的是malloc。


你读过关于内存分配的维基百科文章和其中有关dlmalloc的部分吗? - gfour
1个回答

15
高阶位是Dalvik需要具有一个与默认的malloc管理堆分离的底层分配器,因此它可以对分配方式具有正确的控制,知道其他子系统不会干扰。
事实证明,dlmalloc是一个相当成熟的现有库,提供了我们所需的隔离和钩子。意图(直到我离开团队为止)是最终用更特定的东西来替换它,但这从未成为采取该特定尝试的足够紧迫的问题。
至于dlmalloc和malloc之间的详细差异:dlmalloc是传统libc malloc API的特定实现,而“malloc”本身并不特定于特定的实现。但即使您具体说明,我也怀疑我能提出比“读代码”更多的建议。

1
很棒的答案,想知道您是否可以澄清一些事情 - 在Android上是否使用dlmalloc作为* malloc,在每个进程中维护普通用途和dalvik的单独池,还是dalvik使用dlmalloc,而其他malloc调用(在jni lib或其他地方)最终使用其他东西? - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接