24

今天是否有任何 Android 支持可以提高性能的交换区域?

大多数 Android 设备放弃该功能的考虑因素是什么?

4

3 回答 3

31

今天有任何Android支持交换区吗?

引用Dianne Hackborn 的话

更具体地说,它确实使用分页但不使用交换空间。也就是说,它在很大程度上依赖于能够 mmap() 文件并根据需要从文件中获取内核页面(并在不需要时删除这些页面)。然而,它不使用交换空间来分页脏页。


稍作调整,交换区就可以与 Android 的默认低内存杀手一起很好地工作,对吧?

我当然不会这么认为。

今天是否有任何 Android 支持可以提高性能的交换区域?

它不应该“提高性能”。

是什么考虑让 Android 放弃了这个想法?

首先,板载闪存速度很慢,比您习惯在台式机和笔记本电脑上使用的硬盘驱动器和 SSD 慢得多。尽管如今 Android 设备上使用的闪存存储质量比以前更好,但速度仍然不快。这就是为什么,例如,在进行数据库 I/O、使用事务、限制磁盘写入操作时,我们必须特别小心。

其次,从历史上看,板载闪存的空间有限。我们的应用程序没有足够的内部存储空间,更不用说专门用于交换了。


如果您想进一步讨论这个问题,请使用更合适的论坛,例如http://android.stackexchange.com,因为您的问题仅与软件开发相关。

于 2013-07-04T21:54:38.583 回答
8

Android 确实支持交换...不要忘记它只是带有一些 UI 的普通 Linux。:)

但是,支持取决于您使用的内核。使用内核时,您应该知道它是否支持交换空间。

如果您擅长内核,请获取源代码,启用交换支持并编译它。我保证这应该很有趣:p

就我个人而言,我的内核支持交换空间,我使用一个 20 MB 的文件作为交换文件。

于 2013-07-04T21:32:47.723 回答
4

Android 甚至 iOS要真正支持非内核交换,必须克服三个障碍:

  1. 空间限制:由于使用闪存,与 HDD 相比,空间相对溢价
  2. 写入频率:闪存在变得不可靠之前可以容忍更少的写入(相对于 HDD)
  3. 通信吞吐量:移动设备上的主存和闪存之间的吞吐量很差
于 2020-09-24T12:24:07.403 回答