【发布时间】:2010-07-19 15:48:51
【问题描述】:
运行 iphone 应用程序的舒适范围是多少。
我的应用目前峰值约为 5.4 mb,想知道导致崩溃的正确数量。
我听说在 iphone 3G 上减去正在运行的应用程序(例如 Mail、Safari 等)大约有 40 mb。
有人知道这件事的真相吗?
【问题讨论】:
-
没有人很确定确切的数字,但对于估计.. 请参阅重复的 duplicate question
运行 iphone 应用程序的舒适范围是多少。
我的应用目前峰值约为 5.4 mb,想知道导致崩溃的正确数量。
我听说在 iphone 3G 上减去正在运行的应用程序(例如 Mail、Safari 等)大约有 40 mb。
有人知道这件事的真相吗?
【问题讨论】:
一位 Apple 工程师告诉我,3G 和 3GS 上大约 25 megs 可用于应用程序。在我的应用程序被杀死之前,我已经对此进行了测试并看到了大致相同的数字。不过现在不知道细节,使用后台应用程序,还是在 iPhone 4 上。
【讨论】:
后台应用程序可以在内存警告时被终止,以便为前台应用程序提供更多内存,因此“内存使用”和“空闲内存”的整个概念有些无用。如果您查看应用程序/控制台日志并且没有看到任何内存警告,请不要担心。如果您正在做任何占用大量内存的事情(拍照、AVCapture、图像处理),“1 级”内存警告就不足为奇了。 “2 级”内存警告意味着您应该小心一点,“3 级”是您的应用被杀死 IIRC 之前的最后一个警告。
在您的应用支持的最差设备上进行测试,例如如果您不支持 3.1,则运行 3.1.3 的原始 iPhone/iPod Touch 或 4.0.1 上的 iPhone 3G/iPod Touch 2G。在旧设备上进行测试也揭示了性能问题,尤其是在涉及图形硬件的情况下——CALayer.mask、CALayer.contentCenter 和 UIView.contentStretch 仅在 3GS 及更高版本(iPhone 4、iPad,可能是 iPodTouch 3G)上得到正确支持,并且在旧设备上呈现有点奇怪或缓慢。旧设备的“可接受”性能由您决定。
出于内存/性能原因,通常不值得在旧操作系统上进行测试(2.something 中存在 syslogd 内存泄漏,但您可以假设大多数用户已升级)。请注意,较新的操作系统通常速度较慢 — 4.0 在 3G 上比 3.1.3 慢很多,但在 3GS 上表现完美。也许这是 ARM 与 Thumb 的较量,或者只是计划过时,但值得了解。
【讨论】: