除了巨大的百万像素相机和高刷新率屏幕之外,智能手机世界的最大趋势似乎是虚拟内存。 有人将其称为动态 RAM 扩展,而其他人则将其称为扩展 RAM。 不管它叫什么,这个想法都是一样的。 允许用户将其存储空间的一部分用作 RAM 以帮助进行多任务处理。 在本指南中,我们将讨论内存管理在 Android 中的工作原理以及虚拟 RAM 的概念与它有何不同。 我们将尝试考虑是否即使在 Android 上也需要虚拟 RAM。 所以让我们得到它。

内存管理如何在 Android 上运行
首先,了解 Android 如何管理您的内存非常重要。 在 Android 中,内存有 3 种类型。 首先是您的 RAM,然后是 zRAM,最后是您的存储。 RAM 是运行所有应用程序的主要内存单元。 然后是板载存储,预算设备上的 UFS 或 eMMC。 最后,我们有 zRAM。 基本上,zRAM 是 RAM 中的一个分区。
zRAM 背后的理念是将 RAM 上的低优先级数据压缩并存储在 zRAM 中。 由于 RAM 在任何时候都比普通存储快,因此在作为 RAM 的一部分的 zRAM 中压缩数据仍然比从存储中访问数据要快,即使您计算了压缩和解压缩时间。

现在我们已经为 Android 创建了三种不同类型的内存,让我们看看操作系统是如何处理所有这些的。 所以Android使用了分页技术。 它的工作方式是对 RAM 进行分页,每页通常为 4KB。 无论此页面是免费的还是积极使用的,它都会结合起来分别显示已使用的 RAM 和未使用的 RAM。 接下来,内核的工作是将已使用的内存转换为空闲内存。 它通过将这些页面上的数据传输到您的存储来做到这一点。
什么是编号,它是如何工作的?
要了解它们的工作原理,让我们了解页面类型。 您可以将页面分为两种类型 - 干净页面和脏页面。 干净的页面在存储空间中保存了一个未修改的版本。 同时,脏页包含存储在存储中的数据的修改版本。 现在,这个修改过的和未修改过的分别是什么? 让我们称之为对内存的动态使用。
未修改版本是静态数据,而修改版本是每秒变化的动态数据。 Android 可以在需要时擦除干净的页面,因为它们不会动态访问资源。 这有助于释放 RAM 并使更多可用。 这听起来可能太技术性了,所以让我们使用现实世界的应用程序更容易理解。

假设你打开 Twitter ,然后浏览您的提要,然后切换到其他内容。 Twitter 仍在您的 RAM 中。 但是如果你有一段时间不打开它,它的优先级就会降低。 稍后,如果你推出新的东西,Android 将不得不释放 Twitter 使用的内存。 所以它所做的就是将其值和数据更改为存储,并为您提供可用空间。 这就是为什么当你重新打开 Twitter 时,它会首先显示它休眠的时间线,然后刷新。 这同样适用于 Facebook أو Reddit 或类似的应用程序,如计算器或笔记。 这些应用程序使用干净的页面,其中数据的副本静态保存在您的存储中。

现在,对于脏页,考虑 Spotify 或任何音乐播放器。 您可以在播放器中播放一些音乐,然后在后台播放,而无需打开应用程序。 但是,系统无法关闭它,因为它会动态使用您的内存。 因此,Android 会压缩应用程序并在需要更多可用 RAM 时将其转换为 zRAM。
什么是虚拟内存
既然您知道了 Android 是如何管理内存的,那么您一定想知道——默认的 RAM 功能从何而来? 还记得我们说过 zRAM 也是 RAM 的一部分吗? 虚拟 RAM 的工作方式是它在您的存储上创建一个交换分区,并将其用作额外的 zRAM。

由于 zRAM 仅存储在您的 RAM 中,因此您可以压缩和存储在其中的页数是有限的。 使用交换分区,您可以将存储空间用作额外的 zRAM,以压缩和转移应用程序,同时释放物理 RAM 中的空间。
这个功能是新的
那么,这一切都是新的吗? 嗯,不是真的。 Linux 从一开始就使用交换分区。 对于 Android,专用内核用户使用他们的 SD 卡来创建额外的交换分区,以便更好地管理内存。
因此,品牌制造商在他们的 Android 皮肤中为您提供了相同的功能。 然而,它引出了一个问题——如果该功能如此有用,为什么它不是 Android 源代码的一部分?
好或坏的虚拟内存
答案在于虚拟 RAM 本身的基本工作原理。 尽管该功能允许您通过将应用程序压缩到休眠状态并将它们转移到您的存储空间来在您的设备上运行更多应用程序,但它弊大于利。 由于交换分区主要存放活动的应用程序,所以读写的感觉更高。
这在传统存储上效果很好,但闪存的读写次数有限。 因此,通过使用 SWAP 或虚拟 RAM,您正在缩短设备存储的使用寿命。
这也很好地标记在 安卓开发者页面. “在 Android 上,存储不像其他 Linux 应用程序那样用于交换空间,因为频繁的写入会耗尽内存并缩短存储介质的寿命。” 另一个例子是在新的 Apple M1 MacBooks 中。 这些设备在用户经常抱怨的 Apple SSD 上使用交换分区。
虚拟 RAM 重要吗?你应该使用它吗
基本上,这完全取决于您如何定义多任务处理。 如果他在两到三个活动应用程序之间切换,那么虚拟 RAM 肯定会有所帮助。 但是,如果您不断在 5-6 个高度活跃的应用程序之间切换,则默认 RAM 将不会做任何事情,因为它会不断更改应用程序。
从本质上讲,虚拟 RAM 功能允许您有更多 RAM 可用于运行应用程序。 但是,这是以您的存储成本为代价的。 如果您打算继续使用您的设备超过两年,我们认为使用虚拟 RAM 可能没有多大意义。

