android - 内存 Android: Dalvik堆和本机堆之间的分离程度

  显示原文与译文双语对照的内容
140 3

我知道android平台上有 Dalvik(JVM) 堆和原生堆。Dalvik在本地堆上没有工作。但我不确定这是如何工作的,我的意思是Android操作系统如何把它们分开?

可能情况 1: 由独立的内存硬件组成( 我不太相信)

可能情况 2: Android操作系统为两个堆提供了固定的内存

可能情况 3: Android操作系统必须在必要时分配Dalvik内存堆的部分来成为本地堆,因此本地堆和Dalvik堆的大小是灵活的。

哪个是 true 或者我没有提到?

时间:原作者:0个回答

98 1

本地堆由 dlmalloc() 管理,它使用 mmap() 和标准调用( 如 sbrk() )的组合来分配内存。托管("dalvik") 堆是由 mmap() 分配的( 大部分) 一大块。它都运行在Linux内核之上,所以如果你理解Linux内存管理,那么你已经经知道了低级部件。

你可以以阅读更多关于如何从托管堆返回空页面的更多信息,该文章在中。

Edit: 关于安卓内存管理信息的规范帖子是这一篇。我不认为它直接回答你的问题,但它有很多好的信息和指向信息网站的链接。

原作者:
...