【发布时间】:2014-01-31 00:28:14
【问题描述】:
...当它在前台时。
对于具有 256MB RAM 的原始 iPad,我发现我的应用在被杀死之前最多可以使用 100-140MB。
现在是什么情况?我可以去买一堆 iDevices 自己做一个测试,但我想检查一下:有人做过测试吗?
我知道这没有准确的答案,我正在寻找一个范围,例如:“应用程序在 512MB 设备上使用 300-350MB 时会被终止。您最多可以安全地使用 300MB。”
具体来说:
在 512MB 内存的设备上,一个应用可以使用多少?
在1GB内存的设备上,一个应用怎么能用?
以上有区别吗?是否每个单独的应用程序都限制在固定数量的内存中以便将一些应用程序保留在后台,或者前台应用程序是否可以从内存中踢出所有后台应用程序,并将整个 1GB(或 512MB)留给它自己(以及操作系统,当然)?
设备是 iPad 还是 iPhone 是否重要?如果我的应用程序可以在内存为 512MB 的 iPad 上运行,是否意味着它也可以在内存为 512MB 的 iPhone 上运行,反之亦然?我知道 UIViews 和它们的 Core Animation 后备存储会因为更大的屏幕尺寸而在 iPad 上占用更多内存,但除此之外,具有相同内存的 iPhone 和 iPad 之间的内存情况是否相同?
我指的是进程使用的总内存——堆、堆栈、静态数据、代码、Core Animation 后备存储等。
如果您倾向于说它取决于操作系统版本,您可以假设我们谈论的是 iOS 7。
我知道使用太多内存意味着当我的应用程序进入后台时,iOS 会更快地终止它。我现在可以接受这种权衡。
【问题讨论】:
-
这不是真的。对于具有 256MB RAM 的原始 iPad,我发现我的应用在被杀死之前最多可以使用 100-140MB。
-
即使它是真的,也不会成为一个糟糕的问题。在这种情况下,“Apple 以外的人都不知道”将是一个答案。
-
@HotLicks 我没有说我在寻找一个准确的答案。正如我在对 xcodeNoob 的回答的评论中所说的那样,一个范围就可以了。喜欢:512MB 设备上的 350-400MB。我在澄清这个问题。
-
HotLicks 是正确的,没有人知道确切的答案。从我过去读过的所有帖子中,我大胆猜测你可以使用 10% 作为一个粗略的数字。如果您使用延迟加载和其他此类技术,则无论如何都不应该太接近该数字。
-
@Kartick 这是一个非常有效的问题,您的回答非常棒。通读这篇文章对我很有帮助,因为我看到我的应用程序在最近一次迭代后刚刚从 86 MB 跃升至 136 MB。我已决定将目标保持在 100 MB 左右——这将使我保持精简,并在我想为 Apple Watch 或 tvOS 修改我的应用程序时更快地调整。
标签: ios iphone ipad memory ios7