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