soword科技言
永久公益免费API接口
提供永久免费的API接口,查看更多API接口,如果您有其他免费API资源,请联系我们,造福人类。
提供商务开发:小程序,系统,APP
定制开发,免费评估,免费咨询,价格便宜,售后保障,前往开发服务中心联系开发客服中心
苹果vs安卓RAM管理:谁做得更好?

Android Authority上的链接可能会为我们赢得佣金。了解更多

你的手机需要多少随机存取存储器(RAM)才能顺利完成多任务,这是一个不确定的问题,尤其是在苹果和安卓手机的随机存取存储器(RAM)容量不同的情况下。智能手机依靠RAM来保存操作系统(如Android和iOS),并运行应用程序和这些应用程序的数据,以及一些缓存和缓冲数据。RAM需要进行组织和管理,以便应用程序能够顺利运行。当一个新应用启动时,需要在内存中找到一个空闲位置来加载应用并启动它。同样,当一个应用退出时,它占用的空间需要返回到操作系统

只要有足够的空闲内存来启动应用程序,一切都很好。但是当没有足够的可用内存时会发生什么呢?iOS如何处理这种情况?安卓呢

早在Android和iOS的早期,智能手机没有太多内存,iPhone和Android手机的内存大小也没有太大差异。从2008年开始,HTC Dream的内存只有192MB,而最初的iPhone只有128MB

从2009年开始,iPhone 3G的容量一直保持在128MB,而iPhone 3GS的容量翻了一番,达到256MB。iPhone 4和iPhone 5(2012)的价格分别翻了一番和一番。直到2015年苹果发布iPhone 6S时,iPhone仍然有1GB的内存。放大到2021,iPhone 13的PRO包括6GB的RAM。p> 在Android生态系统中,三星Galaxy S(从2010年开始)有512MB内存,而S2有1GB内存。2012年推出的S3和2013年推出的S4都有2GB的车型。这就是我们看到iPhone和Android设备中的RAM大小存在显著差异的地方。三星将2GB应用于S4,比苹果将2GB应用于iPhone 6S早了两年。快进到2021/2022年,我们有16GB内存的Android设备,比如三星Galaxy S22 Ultra

内存大小的这种差异导致了“iPhone优化得更好——它们不需要像Android手机那样多的内存”这样的说法。从表面上看,这似乎是一个合乎逻辑的说法。但事情并没有那么简单。这与优化关系不大,更多的是与Android决定使用Java有关

当开发者为iOS编写应用程序时,它会直接编译成可以在iPhone处理器上运行的代码。这被称为本机代码,因为它不需要任何类型的解释或虚拟环境来运行。另一方面,Android则不同。Android使用Java。当编译Java代码时,它会转换成独立于处理器的中间代码(Java字节码)。同样的Java字节码可以在Arm处理器、x86处理器或RISC-V处理器上运行。Java的口号是“编写一次,在任何地方运行”。这对跨平台兼容性有巨大的好处

然而,Java有一个缺点。每个操作系统和处理器组合都需要一个名为Java虚拟机(JVM)的运行时环境,该环境能够理解Java字节码,并能将其转换为处理器的本机代码。最初,这是通过解释完成的,这意味着每个字节码块都被读取,然后执行,然后读取下一个字节码块,依此类推。随着时间的推移,人们发明了不同的技术来加速这个过程,包括缓存以前转换的块、即时编译为本机代码、提前编译等等

但是,不管这些技术有多好,仍然存在两个问题。首先,本机代码的性能优于通过JVM运行的代码。其次,JVM的使用(即使在使用提前编译时)增加了应用程序使用的RAM量

下面是一个在iOS和Android上运行的不同应用程序使用的RAM表:

正如你所看到的,iOS应用程序往往使用更少的RAM——在某些情况下,最多可以减少70%。如果按平均值计算,内存大约减少40%。这意味着,如果其他条件都相同,iPhone需要减少40%的内存,才能在内存中容纳与Android手机相同数量的应用程序。如果iPhone 13 Pro有6GB,那么Android旗舰设备需要8GB才能运行相同的应用程序

然而,一切都没有失去!并非所有应用都使用JVM。Android上有一些原生应用。它们往往是游戏,因为游戏不使用Android UI或各种Android框架。Android为游戏编写者提供了一种直接将源代码编译成本地二进制文件的方法。直接在没有JVM的处理器上运行的代码。所有流行的游戏工具,比如Unity和Unreal,都是通过编译代码以在本地运行,不需要JVM

下面是一张在iOS和Android上运行的不同游戏使用的RAM表:

结果与应用程序截然不同。在这里,我们可以看到Android上使用更少内存(最多减少20%)的游戏,以及一些使用更多内存的游戏。平均而言,iOS游戏使用的内存比Android版本少10%。这显示了使用JVM和Android UI与编写本机游戏之间的区别。这10%是一个很重要的数字,但一旦事情接近这一点,我们需要开始研究编译器版本、屏幕分辨率、纹理压缩、纹理分辨率、OpenGL ES、Metal等等。底线是,对于游戏玩家来说,iOS和Android上所需的内存量是相似的

在考虑智能手机的理想内存量时,定义“理想”是很重要的。在iPhone上运行一个应用程序,即使是旧款,也不是问题。问题是,有多少应用程序或游戏可以同时留在内存中?换言之,你可以在不需要重新加载的情况下在多个应用之间主动切换?你一天中多次使用多少应用程序或游戏?如果你发了一封电子邮件,玩了一个快速游戏,在社交媒体上发布了一些东西,然后返回到你的电子邮件应用程序,发现它需要重新加载,这将是一个非常糟糕的用户体验。这样的限制这会很快变得令人沮丧

所以“理想”部分取决于你如何使用iPhone。生产率游戏?社会化媒体?视频编辑?照相术诸如此类……

如果启动应用程序时没有足够的可用内存,那么iOS会执行以下两种操作之一。首先,它试图压缩一些已经有一段时间没有使用的内存块(称为页面)。iOS获取其中一些页面,压缩它们(使用一种叫做WKdm的特殊压缩算法),然后将它们写回内存。如果你有128K的合格页面,并且假设压缩率为50%,那么128K可以压缩到64K,释放出64K

其次,如果使用压缩释放的内存不足,iOS将从RAM中丢弃应用程序以回收其内存。这被称为jetsam事件。如果你切换回一个被抛弃的应用程序,那么它将需要重新加载

这是一个按时间顺序排列的图表,显示了使用的内存量和压缩的内存量,因为不同的应用程序在3GB内存的iPhone SE(2020)上启动和使用:

开始时,iOS只压缩了大约200MB的内存,使用的内存刚刚超过2GB。然后,随着不同应用程序的启动,使用的RAM量增加,压缩的RAM量增加。你可以在预订时看到第一个显著的峰值。com应用程序已启动。Google Photos启动时还有另一个问题,现在iOS使用了超过1GB的压缩内存。当我开始Tasty时,已经有十几个应用程序在内存中,没有一个被丢弃。为了给系统增加内存压力,我打开Safari,开始浏览不同的网站,每个网站都有自己的标签。此时,Safari使用了850MB的RAM,iOS被迫将Keynote从内存中删除

正如我们前面讨论的,游戏使用的内存比应用程序多得多。同一款iPhone SE可以同时存储四款游戏(地铁冲浪者、1945年空军、糖果粉碎、斗殴明星)。然而,在第五个游戏《沥青9》的开始,iOS放弃了两个游戏(地铁冲浪者和1945空军)来为它腾出空间

内存越多,应用程序和游戏被丢弃的频率就越低。以下是iPhone 13 Pro(内存为6GB)的图表,显示了它如何在内存中处理多个游戏:

iPhone 13 Pro可以同时在内存中存储比iPhone SE更多的游戏。它的RAM是预期的两倍。后面的游戏相当大,其中一些游戏占用了1GB的内存。当Genshin Impact启动时,iOS无法再压缩任何内存页(此时已经压缩了超过2GB的内存),因此它被迫终止地铁冲浪者、1945空军和斗殴明星,以支持新游戏

对于那些只使用高效应用和社交媒体(没有太多浏览)的人来说,3GB就足够了。如果你想买一部新iPhone,而不是iPhone SE,那么所有4GB型号都足够了。如果你做了很多浏览或多媒体的东西,4GB将工作,但你应该考虑一个6GB的模型。

< P>如果你是一个重玩家,加上你想将来证明你的设备,你应该强烈地考虑一个带有6GB RAM的iPhone。p>

我们已经看到Android应用程序倾向于使用更多内存。这意味着Android本身,包括其标准应用程序,将使用更多内存。其结果是,Android从一开始就将更加渴望内存

当安卓设备没有足够的内存来启动新的应用程序或游戏时,它会使用与iOS非常相似的技术——压缩内存页。在Android中,这被称为切换到zRAM,遵循Unix/Linux使用“z”表示压缩的传统

4GB像素手机可以运行上表中的所有应用程序(从Play store到Twitter),所有应用程序都保留在内存中,因此您可以在它们之间自由切换,而无需重新加载

当Android上只有4GB内存时,游戏就有点不同了:

Pixel 3 XL配备4GB内存,但只有3579MB可用。似乎它应该被标记为3.5GB,而不是4GB!注意,几乎所有的内存从一开始就被使用。随着游戏的开始,内存压缩(换成zRAM)会增加。当“斗殴之星”发射时,有超过1.5GB的压缩内存被使用,但仍然不够,地铁冲浪者被杀

对于内存更多的设备,比如三星Galaxy S21 Ultra(内存为12GB),情况就大不相同了:

更多的内存意味着更多的游戏可以同时留在内存中。正如你所看到的,12GB对于铁杆安卓玩家来说已经足够了。从地铁冲浪者到根申冲击队的所有比赛都留在了记忆中。S21 Ultra直到影子枪传奇开始使用,才开始使用所有的板载内存,然后zRAM的使用量也相应增加

即使在加载并播放最后一个游戏时,也不会从内存中删除任何其他游戏。事实上,为了迫使Android删除一款游戏,我需要启动Chrome并打开12个标签。直到那时,安卓才杀死了Minecraft

如果你只使用少数几个应用程序,不做太多的网页浏览或游戏,那么拥有4GB内存的安卓设备将是可用的。在购买主流智能手机时,将6GB内存作为目标,因为这样可以提高生产力和社交媒体应用程序,以及适量的浏览标签,再加上一些游戏

对于中高端或高端设备,8GB将提供良好的多任务体验,以及一些未来的证明。Galaxy S21 Ultra上的12GB内存显然是玩家和超级用户的最佳选择。12GB还提供了良好的未来证明。此时,16GB内存似乎只不过是吹牛的权利

Android和iOS都使用内存压缩来帮助从物理RAM中挤出一些额外的容量。这两个操作系统都在运行中完成这项工作,并且都需要先解压缩任何压缩内存,然后才能再次使用。就技术而言,一个和另一个一样好,同时指出,一般来说,Android在试图关闭内存中现有的应用程序之前,会尝试进行更多的压缩

然而,由于iOS使用本机代码而不是中间语言,iOS应用程序和iOS本身往往更小。在处理游戏时,这种区别不那么重要,但它仍然是一个重要因素

简而言之,iPhone 13 Pro中的6GB对于超级用户和游戏玩家来说已经足够了。它的表现不如S21 Ultra,但S21 Ultra的存储容量是后者的两倍。但6GB的iPhone比6GB的Android设备要好得多

知道安卓需要更多内存,你需要一台8GB安卓设备与6GB iPhone处于同一级别(在内存管理方面)

你怎么看?我的测试是否反映了你对Android和iOS的体验?请在下面的评论中告诉我


2023-03-22 10:04:50

新人小程序+APP定制199元起


发放福利,助力中小企业发展,真正在互联网中受益

点击询问定制

广告服务展示