iPhone的RAM往往比Android设备少?这是为什么?Apple与AndroidRAM管理的一点历史 早在Android和iOS的早期,智能手机没有太多RAM,iPhone和Android手机的RAM大小也没有太大差异。从2008年开始,HTCDream只有192MB的RAM,而最初的iPhone则是128MB。iPhone3G保持在128MB,而iPhone3GS从2009年起翻了一番,达到256MB。iPhone4再次翻了一番,iPhone5(2012)再次翻了一番。iPhone继续配备1GB内存,直到2015年苹果发布配备2GB内存的iPhone6S。放大到2021年,iPhone13Pro包括6GB内存。 在Android生态系统中,三星GalaxyS(2010年起)配备512MB内存,而S2则为1GB。2012年的S3有2GB的变体,2013年的S4也是如此。这就是我们看到iPhone和Android设备的RAM大小存在显着差异的地方。三星在S4中加入了2GB,比苹果在iPhone6S中加入2GB早了两年。快进到20212022年,我们拥有16GBRAM的Android设备,例如三星GalaxyS22Ultra。 iPhone的RAM更少,但这是否意味着它们得到了更好的优化? RAM大小的这种差异导致了诸如iPhone得到了更好的优化它们不需要像Android手机那样多的RAM这样的说法。从表面上看,这似乎是一个合乎逻辑的陈述。但这并不是那么简单。它与优化关系不大,而与Android决定使用Java的关系更大。ObjectiveCSwift与JavaKotlin 当开发人员为iOS编写应用程序时,它会直接编译为可以在iPhone处理器上运行的代码。这被称为本机代码,因为它不需要任何类型的解释或虚拟环境即可运行。另一方面,Android则不同。Android使用Java。编译Java代码时,它会变成独立于处理器的中间代码(Java字节码)。相同的Java字节码可以在Arm处理器、x86处理器或RISCV处理器上运行。Java的口号是一次编写,随处运行。这对跨平台兼容性有巨大的好处。 Android和iOS使用的不同编程语言需要不同数量的RAM。 然而,Java有一个缺点。每个操作系统和处理器组合都需要一个运行环境,称为Java虚拟机(JVM),它可以理解Java字节码并将其转换为处理器的本机代码。最初,这是通过解释完成的,这意味着读取每个字节码块,然后执行,然后读取下一个块,依此类推。随着时间的推移,人们发明了不同的技术来加速这个过程,包括缓存先前转换地块、即时编译为本机代码、提前编译等等。但是,无论这些技术有多好,仍然存在两个问题。首先,本机代码的性能优于通过JVM运行的代码。其次,JVM的使用(即使使用提前编译)增加了应用程序使用的RAM量。 这是运行在iOS和Android上的不同应用程序使用的RAM表: 如您所见,iOS应用程序倾向于使用更少的RAM在某些情况下最多减少70。如果取平均值,则RAM将减少40左右。这意味着,如果其他条件相同,iPhone将需要少40的RAM来存储与Android手机相同数量的应用程序。如果iPhone13Pro有6GB,那么旗舰Android设备将需要8GB才能运行相同的应用程序。然而,一切都没有丢失!并非所有应用程序都使用JVM。有适用于Android的本机应用程序。它们往往是游戏,因为游戏不使用AndroidUI或各种Android框架。Android为游戏编写者提供了一种将其源代码直接编译为本机二进制文件的方法。在没有JVM的情况下直接在处理器上运行的代码。所有流行的游戏工具,如Unity和Unreal,都通过编译代码以在本地运行,无需JVM。 如果其他条件相同,iPhone将需要少40的RAM来存储与Android手机相同数量的应用程序。 这是在iOS和Android上运行的不同游戏使用的RAM表: 结果与应用程序完全不同。在这里,我们可以看到在Android上使用更少内存的游戏(最多减少20)和一些使用更多的游戏。平均而言,iOS游戏使用的RAM比Android版本少10。这显示了使用JVM和AndroidUI与编写原生游戏相比的区别。这10是一个很大的数字,但是一旦事情接近尾声,我们就需要开始查看编译器版本、屏幕分辨率、纹理压缩、纹理分辨率、OpenGLES、Metal等等。最重要的是,对于游戏玩家来说,iOS和Android所需的RAM量是相似的。iPhone需要多少内存? 在考虑智能手机的理想RAM容量时,重要的是定义我们所说的理想。在iPhone上运行一个应用程序,即使是旧型号,也不是问题。问题是,有多少应用程序或游戏可以同时保留在内存中?换句话说,您可以在无需重新加载的情况下主动切换多少个应用程序?您在一天中多次使用多少应用程序或游戏?如果您发送一封电子邮件,玩一个快速游戏,在社交媒体上发布一些内容,然后返回您的电子邮件应用程序发现它需要重新加载,这将是一个非常糟糕的用户体验。这样的限制会很快变得令人沮丧。 如果使用压缩没有释放足够的内存,那么iOS将从RAM中丢弃应用程序以回收其内存 如果在您启动应用程序时没有足够的可用内存供它使用,那么iOS会执行以下两种操作之一。首先,它会尝试压缩一些暂时未使用的内存块(称为页面)。iOS获取其中一些页面,压缩它们(使用称为WKdm的特殊压缩算法),然后将它们写回内存。如果您有128K的合格页面,并且假设压缩率为50,那么128K可以压缩到64K,从而释放64K。 其次,如果没有使用压缩释放足够的内存,那么iOS将从RAM中丢弃应用程序以回收其内存。这被称为jetsam事件。如果您切换回已放弃的应用程序,则需要重新加载。 这是一个时序图,显示了在具有3GBRAM的iPhoneSE(2020)上启动和使用不同的应用程序时使用的RAM量和压缩RAM的量: 一开始,iOS仅压缩了大约200MB的RAM,并且正在使用超过2GB的RAM。然后,随着不同应用程序的启动,使用的RAM量会增加,压缩的RAM量也会增加。当Booking。com应用程序启动时,您可以看到第一个显着峰值。启动GooglePhotos时还有另一个问题,现在iOS使用了超过1GB的压缩RAM。到我开始Tasty的时候,内存中有十几个应用程序,没有一个被抛弃。为了给系统施加更大的内存压力,我打开了Safari并开始浏览不同的网站,每个网站都在自己的选项卡中。此时,Safari正在使用850MB的RAM,iOS被迫从内存中抛弃Keynote。 正如我们之前所讨论的,游戏比应用程序使用更多的内存。同一部iPhoneSE可以同时在内存中存储大约四款游戏(SubwaySurfers、1945Airforce、CandyCrush、BrawlStars)。然而,在第五款游戏《狂野飙车9》开始时,iOS放弃了两款游戏(地铁冲浪者和1945年空军)为其腾出空间。 当内存更多时,应用程序和游戏被抛弃的频率就会降低。这是iPhone13Pro(6GBRAM)的图表,显示了它如何处理内存中的多个游戏: 与iPhoneSE相比,iPhone13Pro可以同时在内存中存储更多游戏。它有双倍的RAM,所以这是意料之中的。后者的游戏非常大,其中一些占用了超过1GB的RAM。当GenshinImpact启动时,iOS无法再压缩内存页面(此时已经压缩了超过2GB的内存),因此它被迫终止了SubwaySurfers、1945Airforce和BrawlStars,转而支持新游戏。 3GBiPhone适合基本使用,但您需要更多用于游戏。 最后一个要考虑的方面是面向未来。GenshinImpact是一款大型游戏,在iOS上占用超过1。2GB的RAM。2020年发售,谁知道未来几年会出现什么游戏呢!iPhone游戏玩家应该考虑某种缓冲,并购买内存尽可能大的设备。哪个更好:iOS还是Android? 对于那些用工具类应用程序和社交媒体(没有太多浏览)的人来说,3GB就足够了。如果您想购买新iPhone,而不是iPhoneSE,那么所有4GB型号都足够了。如果您进行大量浏览或多媒体操作,那么4GB就可以了,但您应该考虑使用6GB的型号。 如果您是重度游戏玩家,并且希望设备能够适应未来的发展,您应该强烈考虑配备6GBRAM的iPhone。更多RAM意味着更多游戏可以同时保留在内存中。如您所见,12GB对于铁杆Android游戏玩家来说绰绰有余。从SubwaySurfers到GenshinImpact的所有游戏都留在了记忆中。S21Ultra直到ShadowgunLegends启动后才开始使用所有板载内存,然后使用的zRAM量也相应增加。即使加载并播放了最终游戏,也不会从内存中删除任何其他游戏。事实上,要强制Android删除游戏,我需要启动Chrome并打开12个标签。直到那时,Android才杀死了Minecraft!如果您只使用少数应用程序并且不进行太多网页浏览或游戏,那么具有4GBRAM的Android设备将是可用的。购买主流智能手机时的目标是6GB内存,因为这将允许生产力和社交媒体应用程序,以及适度数量的浏览标签,以及一些游戏。 我是WhenTech,您的选择是什么呢?