0

我正在为 iPad 开发一个应用程序,它在 iPad 的 RAM 上最大消耗 5.5 MB。我已经多次确保所有这些东西Instruments。只要应用程序使用更多内存,它就会引发内存警告并且应用程序开始表现异常。

  1. 我已经实现了在确实接收内存警告中释放内存的代码行。
  2. 我还确保NO LEAKS在整个应用程序中做到这一点。
  3. 我开始知道 App 至少需要 6 mb 内存。

这是应用程序的一般流程。

登录->1st-list View ->2nd-list view ->3rd-list view ->4th-Map & listview ->5.Map&List

每个屏幕的简要说明。

  1. 登录 - 带有用户名-pswd 的简单屏幕,进行网络服务调用和验证用户
  2. 根据身份验证的结果,它将获取更多数据并在第一个列表视图屏幕上列出。
  3. 根据从第一个列表中的选择,应用程序将在第二个列表视图中加载列表
  4. 根据从第二个列表中的选择,应用程序将在第三个列表视图中加载列表
  5. 根据从 3rd-list 中的选择,应用程序将加载列表,地图将相对具有引脚。
  6. 基于来自地图的注释,应用程序将导航到另一个地图和不同的图钉。

在这里,应用程序在第 6 个屏幕上收到内存警告。我确保了所有编码标准和所有对象的所有重要性。

在上述情况下,所有屏幕都是非常必要的,我使用的是导航控制器,只是一一推送视图控制器。没有重复 - 确保两次。

现在,重点是,正在使用 iOS 4.1 在 iPad-1 上测试应用程序,并且在开始测试应用程序之前强制关闭所有应用程序。虽然,应用程序收到警告 @ 仅 5.5 mb 的使用量。

我试图说服我的项目经理,这个内存使用量很高,他们在问我 - 应该有一些选项来设置 MEMORY。这种高图形游戏和应用程序如何流畅运行?我无法从 Apple 那里找到合适的文件说 LIMIT。我没有答案。

如果无法设置内存限制,我要求您提供适当的证明链接,以便我可以将其展示给我的项目经理。如果这种设置是可能的,我非常渴望知道如何做到这一点。

4

2 回答 2

1

第一代 iPad 共有 256 MB 内存。当然,其中一些将由操作系统本身使用。

假设至少 64 MB 可用于您的应用程序是非常保守的。所以 6 MB 对我来说听起来很小。您的应用程序正在执行某些操作会导致分配更多内存。

绝对没有一些“我是游戏让我使用更多内存选项”。所有应用程序都可以使用尽可能多的内存(尽管尽量减少内存使用量始终是一个好习惯)。如果内存不足,则通知应用程序,如果内存耗尽,则终止前台应用程序。

如果您的应用程序被终止,请检查崩溃日志以查看它使用了多少内存。我的猜测是你会发现你使用的比你想象的要多。

于 2012-07-08T19:12:45.987 回答
1

我怀疑您是否会从 Apple 文档中找到有关 iOS 下应用程序内存限制的任何积极声明。

但是如果你谷歌“ios app 可用内存”你会发现很多信息;例如,这个SO 线程

以我的经验,我的应用程序可以维持大约 20MB 的“峰值”内存使用量(取决于设备状态),但是内存使用量必须迅速低于 10MB 阈值才能使应用程序不被杀死(我会说 6 -8MB 是更精确的数字)。有时,一个应用程序可能会因为无法足够快地“撤消”峰值而被终止。

可能对您的经理有用的一条信息是 Instruments 中“内存监视器”工具的输出,特别是“空闲物理内存”。如果您使用它,您将始终看到当“可用物理内存”低于给定限制(根据 Instruments 输出),接近零剩余内存时,您的应用程序将被终止。

现在,达到这个限制是因为您分配了一些内存(由分配或泄漏工具报告)还是因为其他因素(加载到内存中的框架?iOS 内核中的某些东西或仪器未跟踪的东西?)您不能知道。但是可以肯定的是,您可以了解设备中的可用物理内存如何随着您的应用程序的使用而随时间变化。

希望这可以帮助。

于 2012-07-08T19:20:58.537 回答