为什么大多数Android设备都不像典型的操作系统那样具有交换区域?

时间:2013-07-04 21:17:59

标签: android swapfile

今天的Android是否支持交换区域,这可能会提升性能?

使大多数Android设备放弃该功能的注意事项是什么?

3 个答案:

答案 0 :(得分:27)

  

今天的Android是否支持交换区?

引用Dianne Hackborn

  

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


  

稍微调整一下,交换区域可以与Android的默认低内存杀手一起使用,对吗?

我当然不会这么想。

  

今天的Android是否支持交换区域,这可能会提升性能?

不应该“提升表现”。

  

让Android放弃这个想法的考虑因素是什么?

首先,板载闪存速度慢,比您在台式机和笔记本电脑上使用的硬盘和SSD慢得多。虽然今天在Android设备上使用的闪存存储质量比以往更好,但它仍然没有快速尖叫。这就是为什么,例如,在进行数据库I / O时,我们必须特别小心,使用事务来限制磁盘写操作的数量。

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


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

答案 1 :(得分:6)

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

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

如果你擅长内核,那么抓住源码,启用交换支持并编译它。我保证应该很有趣:p

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

答案 2 :(得分:0)

要让Android甚至iOS切实地支持非内核交换,必须克服三个障碍:

  1. 空间限制::由于使用了闪存而不是HDD,因此空间相对较贵
  2. 写入频率:闪存在变得不可靠之前(相对于HDD)可以容忍较少的写入操作
  3. 通信吞吐量:移动设备上的主内存和闪存之间的吞吐量很差