【问题标题】:How to understand Paging and Memory-mapping in Android Memory Management如何理解 Android 内存管理中的分页和内存映射
【发布时间】:2017-08-21 21:27:00
【问题描述】:

从这个答案https://stackoverflow.com/a/17478535/1727934 可以知道,Android 不支持虚拟内存。

然后从维基百科,我们可以知道:

分页是虚拟内存实现的重要组成部分

https://en.wikipedia.org/wiki/Paging

但是根据官方文档,我们可以看到:

Android Runtime (ART) 和 Dalvik 虚拟机使用分页和内存映射 (mmapping) 来管理内存。

https://developer.android.com/topic/performance/memory-overview.html

我对此感到困惑:分页用于虚拟内存,但Android不支持虚拟内存,那么这个分页在Android中是什么意思?

【问题讨论】:

    标签: android memory memory-management paging virtual-memory


    【解决方案1】:

    问题在于,历史上,逻辑记忆翻译虚拟记忆翻译这两个术语一直被混为一谈。逻辑内存涉及到逻辑页到物理页框的映射。虚拟内存涉及将逻辑页面映射到物理页面框架和磁盘上的辅助存储。在 8MB 多用户计算机时代,逻辑内存和虚拟内存总是一起使用的。

    现在我们拥有具有千兆字节内存的计算机,因此对虚拟内存的需求正在减少,其中页面在磁盘和内存之间移动。但是,逻辑记忆翻译的好处仍然存在。

    将内存划分为映射到物理页框的逻辑页仍然存在。

    【讨论】:

    • 感谢您的回答。但这并没有解决我的问题,我仍然对Android为什么使用分页以及分页是否用于虚拟内存感到困惑?
    • 您可以在没有虚拟内存的情况下使用分页(如将逻辑地址空间划分为页面)(如将页面保存到磁盘)。
    • 所以Android这里使用的分页,只是为了更好地归档共享内存,目的是节省内存,而不是虚拟内存,对吧?
    • 就是这样。我们很可能会看到更多的内存增长。
    • 我认为这个答案应该改进。它应该清楚地说明 (a) 虚拟内存不仅仅是交换空间,而且 (b) Android 确实支持它。
    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 2012-06-22
    • 2016-10-20
    • 2015-06-01
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2013-01-23
    相关资源
    最近更新 更多