一些朋友告诉我,他们的Android手机对常规应用程序的可用内存很少(<100MB),因为操作系统和某些不可中断的服务占用了大部分RAM。例如,一部512MB的手机仅显示90MB的可用内存,因此只能同时运行2-3个应用程序。

我想知道创建交换分区/文件是否会有所帮助,但是我在网上看到的意见不一,我不确定该怎么做。这是我的问题:

(1)是否会有很多不经常使用的内存页面要交换出来,尤其是在OS和那些不可杀伤的服务中?

( 2)换出小内存页将如何损害闪存的寿命?闪存(或SD卡?)会自动进行损耗均衡吗?

(3)交换是否在运行多个应用程序时确实对性能有所帮助?我假设(1)的答案是肯定的。

(4)写入闪存会不会太慢,从而在交换发生时会损害响应能力?

( 5)Android是否确实保留了Linux内核的交换机制,因此只要有交换分区/文件,它就可以进行交换而无需额外配置?

感谢阅读。
/>

#1 楼

我认为Android交换不会有太大好处,因为Android应用程序生命周期是一种更高级的交换形式。


(1)会有很多
不经常使用的内存页面可以交换出
,尤其是在OS和那些
不可杀死的服务中吗?


您不能交换当需要更多RAM时,即使在台式机Linux和Android中,OS内核也已终止了服务。如果您的设备供应商坚持认为您必须一直运行无用的服务,那么请为您的设备添加根目录。存储寿命吗?
闪存(或SD卡?)是否自动
磨损均衡?交换将对很多人造成伤害。


(3)在运行多个
应用程序时,交换对性能真的有帮助吗?我认为(1)的答案是
是的。


在Android上下文中不是。与传统的OS会按照您的要求不断尝试切换进程不同,Android会强制杀死旧的未使用进程并回收其内存;这种终止速度很快,因为应用程序在您执行任务切换时已经保存了它们的状态。 >交换发生了吗?


也许没有。 (5)的确,Android会保留Linux
内核的
交换机制,这是真的吗?
交换分区/文件,它会进行
交换而无需额外的配置吗? (或者,如果您编译自己的内核),您仍然需要一些配置。通常只有一个指向交换文件的fstab文件并执行swapon -a

实际上,我有理由说明交换实际上可能会影响性能:它阻止了Android的内存管理方案Application Life Cycle正常工作。

评论


感谢你的回答。我仍然有问题。在Samsung Fascinate上,10个不可杀灭的服务占用约110M内存。还有22个其他可终止服务正在运行,但“正在运行的应用程序”显示没有应用程序在运行。这是我朋友的电话,我之前不知道她到底做了什么,但似乎很可能同时运行许多服务/应用程序。我认为所有这些后台服务/应用程序启动时都不会使用它们所需的所有页面。此外,保存应用程序状态+重新加载并重新启动应用程序+恢复状态也会很慢。

–常绿
10-10-25在5:44

考虑这个问题的另一种方法是:假设闪存寿命不是问题,Android是否应该进行交换?如果不是,那么Android应用程序和桌面应用程序之间的主要区别是什么,这使得交换在Android上不起作用?我认为Android生命周期不适用于桌面/服务器应用程序。

–常绿
2010-10-25 5:51

@evergreen:当应用程序进入后台时(例如,当用户按下主屏幕以切换任务时),应用程序状态将被保存。稍后,当其他一些应用程序需要内存时,较旧的应用程序或后台服务将被强制终止(FK实际上不需要时间)。这意味着任务杀死是立即的,因为应用程序状态早已保存。重新加载已经在内存中的应用程序时,将获得最快的重新加载时间;但是如果已经卸载了应用程序,则该应用程序需要进行完全重装(与交换情况相同)

– Lie Ryan
10-10-25在16:32



@evergreen:如果使用任务杀手,则将强制应用程序卸载,并且始终必须执行完全重装,而不是在应用程序保留在内存中时进行快速重装。如果您使用交换文件/分区,则(较旧的)应用程序将被替换掉,还原所需的工作量几乎与完全重载相同。除外:通过完全重载,应用程序开发人员已将持久性数据与临时数据分离开来,并且可以优化保存内容和不改进存储内容。在恢复交换时,您不让应用程序开发人员发言,而是将所有内容交换出去。

– Lie Ryan
10-10-25在16:37

@evergreen:即使假设闪存寿命不是问题,Android也不应进行交换,因为“应用程序生命周期”可以做得更好。 Android生命周期专为内存受限的环境而设计,在台式机和服务器环境中,您拥有巨大的内存量,并且用户执行更多的多任务处理,并且他们不希望操作系统杀死后台程序。 Android生命周期的弱点在于它需要应用程序支持。应用程序必须随时准备被杀死,并且必须在预定义的点保存状态。对于桌面应用程序而言,这种复杂性是多余的。

– Lie Ryan
2010-10-25 16:16



#2 楼

尽管Internet上的其他所有人都会告诉您,但是交换绝对有好处。试试看,自己看看。根据经验,在G1或其他内存较低的手机上,交换可使手机运行得更好,更快。

是的,Android内置了生命周期“任务管理”功能,但不是很好。它通常会在内存不足时杀死进程,并且应用程序应使用“捆绑包”保存其状态,以便在您重新启动它们时,它们以与上次进入的状态相同的状态重新启动。


一旦Android确定需要删除某个进程,它便会残酷地执行此操作,只需强制杀死它即可。然后,内核可以立即回收该进程所需的所有资源,而不必依赖该应用程序的编写正确并响应有礼貌的退出请求。允许内核立即回收应用程序资源使避免严重的内存不足情况变得容易得多。


如果它确实起作用,那将是很好的,并且比不加选择的交换要好。但是这些应用程序并不能真正保存其状态。他们只保存最少量的信息即可返回到该状态。 (而且某些应用程序甚至都不需要这样做。)回到该状态需要花费时间。由于交换实际上会保存应用程序的整个状态,而这只是需要重新加载,因此它使应用程序之间的切换更快。

如果从浏览器切换到另一个应用程序,例如,浏览器几乎总是被杀死,然后当您切换回它时必须从Internet重新加载整个页面。这比从交换状态重新加载状态要花费更多的时间,如果您正在执行数据计划,那会浪费您的钱,并且在网页处于动态状态时会导致状态问题。

许多应用程序的启动时间要长得多超出了它们应有的值,或者在重启后实际上并没有返回到相同的状态,因此将它们换出效果更好。

我猜想那些对股票系统感到满意的人会以不同的方式使用他们的手机。

我应该将交换分区与Cyanogenmod一起使用吗?

评论


如果您将其留给生命周期,则应用程序将决定是否缓存额外的数据以提高性能(例如加载的网页)。如果使用交换,这是操作系统的决定,但是操作系统无法确定要保存什么和不保存什么以最佳地优化性能,因此它必须保存和还原所有内容。如果切换任务,浏览器不会从Internet重新下载页面,我经常打开浏览器,切换到一堆繁琐的游戏和其他活动,然后返回到浏览器,最后一页显示所有内容。

– Lie Ryan
10-10-22在16:28

对。两种系统都不是最佳选择,但对于大多数应用程序而言,交换效果更好。如果在重新打开页面之前将其杀死,浏览器只会重新加载该页面。在内存不足的手机上,它几乎总是被杀死。

– Endolith
10-10-22在16:33

@LieRyan-“返回到我的最后一页并立即加载所有内容的浏览器”,浏览器重新加载后是否在打开的页面上恢复滚动位置?那就是Chrome不能做的事情(尽管我非常喜欢这个浏览器),当您在切换到例如接听电话之前停止在某些日志网页的中间阅读时,这是非常不幸的。

– kerim
13年6月6日在10:13

#3 楼

我有一个Spice mi-435(仅在印度出售),其RAM只有340M。地狱,交换文件有很大帮助。我的手机在如此低的RAM上运行ICS,并且肯定进入了很多内存不足状态,并且交换文件对您有很大帮助。在不活跃使用时,所有应用程序状态都将转换为交换。这为我的电话腾出了空间,使更多的应用程序和需要大量RAM的应用程序能够以比以前少得多的滞后时间平稳运行。虽然打开我以前使用过的应用程序时出现问题。由于SD比板上的高速RAM慢得多,因此需要花费一些时间来加载其状态。但是,交换选项对于较少的RAM更好。我建议将分区交换为小于512M的RAM,但不交换为大于512M的RAM。

希望有帮助。

#4 楼

交换文件甚至在具有更高RAM的系统上也有帮助。我的四核1gb ram 7英寸平板电脑通过在uhs-1微型SD卡上进行2gb交换而获得了重要的多任务处理能力。当然,存储器的价格会迅速下降,甚至在持续写入的情况下,nand闪存也应该持续数年。

我基本上认为,因为性能差异如此之大,以至于RAM数量少于真正大的任何人都应该这样做。实际上,它可能应该作为android中的标准选项(以及更大的应用程序缓存和适当大小的Internet缓存)。

我的意思是您拥有64-128gb的微型SD(uhs-1) ,甚至是今年推出的uhs-2,外加16-64gb内部nand(通常是“快速” nand),这是一种原始的ssd甚至SSD,就像在Windows平板电脑上使用的那样-您无法完全满足所有要求高速空间有很多。速度只有在视频中才能真正发挥出来,或者将应用程序加载到内存中-这正是此处的用途。

当然,理想情况下,制造商将更多的精力放在RAM上,而不是分辨率或额外的内核上,因为显然,较高的RAM可以使系统速度受益良多-而且他们也应该提高内部存储的速度(例如,切换到完整的ssd类型的系统,或切换到最小的“快速” nand。但是与此同时,高分辨率往往会在所有设备中造成某种RAM不足,交换文件并缓存到相当快的外部sd很有道理

确实,很高兴看到一些浏览器也保持完整的缓存,大多数浏览器要么速度慢,要么功能低下,很少具有快速和全功能-那部分是因为内部驱动器上应用程序缓存的空间很小。它们旨在在低内存和存储环境中运行,并且整个情况正在发生变化。即使ram不能满足其应有的要求,也可以存储,而且按照UHS-1标准(或今年发布的uhs-2),它的存储速度也相当快,即使它不是“快速”或ssd。

甚至对于更大容量的uhs-1,外部存储器的成本确实是小菜一碟。至少64gb的uhs-1是完全负担得起的(我在这里要花50美元,但是会少一些美元),比该设备便宜得多,而32 gb以下的硬盘基本上是几张纸。

确实可以从台式机上学习很多经验,尤其是现在规格越来越高-性能最低的链接是从存储到ram。您可以做的越多,越好。