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

Jac*_*kWM 21 android swapfile

今天有没有Android支持交换区域,这是为了提升性能?

大多数Android设备都会删除该功能的注意事项是什么?

Com*_*are 29

今天有没有Android支持交换区域?

引用Dianne Hackborn:

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


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

我当然不会这么认为.

今天有没有Android支持交换区域,这是为了提升性能?

它不应该"提升性能".

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

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

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


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

  • 不错的答案,但我不同意交换不会提高性能。即使交换内存会很慢,它仍然不会比重新启动应用程序慢。当内存不足时,应用程序会被杀死。应用程序被杀死后,您需要在切换到它时重新启动它。如果 Android 使用交换,那应该会更快。 (2认同)
  • 这些大部分内容在 2017 年仍然适用吗?我们的手机拥有 128 GB 存储空间,而且存储速度也变得更快。存储速度是否仍然太慢而无法实现?速度还需要提高多少才能使交换变得可行? (2认同)

Dea*_*n P 7

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

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


Mir*_*nes 6

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

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

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

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

  • 考虑到现代中型设备容易拥有或超过512MB的主内存,20MB交换文件似乎是可疑的.因为交换点是*卸载*主内存,因此内存可用*,用于不经常使用的数据低比率似乎不实用. (5认同)