4

由于内存不足异常,我最近有一个应用被应用商店拒绝。该应用程序不会泄漏内存,但它的基本内存占用似乎太高了。根据苹果发送的崩溃日志,它在内存中占用了大约 14000 页(主要是由于巨大的纹理)。不过有两件奇怪的事情:

  1. 在提交之前,我在 5 台设备上对其进行了严格测试,并且从未在其中任何一台设备上发生过这种崩溃。
  2. 我确实在拒绝后优化了纹理,并将它们带到了原始大小的一半左右(纹理内存消耗)。

我无法知道我的应用程序现在占用了多少页,除非我可以重现与苹果相同的崩溃(我永远无法)。有没有另一种方法可以找出我的应用程序的内存占用,这样我就可以确定它现在已经足够优化了。

我确实尝试过仪器,但是当我尝试通过我的 XCode 运行它时,我的应用程序崩溃了(我的 XCode 一定有问题)。但是当我直接在我的 iPhone/iPod 上运行它时,它可以完美运行。任何帮助找出我的应用程序在 iPhone 上的内存占用(如果有类似于 Windows 的任务管理器的东西),将不胜感激。

谢谢

编辑:

  1. 从 XCode 启动应用程序会在控制台中出现以下错误:“启动远程程序时出错:无法获取进程 553 的任务。”

  2. 使用活动监视器启动应用程序会出现以下错误:“目标过早终止,无法收集数据”

编辑2:

通过使用开发配置文件而不是分发配置文件,我能够使用 Activity Monitor 运行我的应用程序。但是现在活动监视器中有几个部分 - 使用的物理内存、实际内存、虚拟内存。我考虑其中哪一个。总结一下,我需要知道其中哪一个会导致 iPhone 抛出 Low Memory 异常。

4

2 回答 2

4

XCode -> 运行 -> 使用性能工具运行 -> 活动监视器。

如果设备已连接,活动监视器将在 iPhone/iTouch 上运行。

于 2010-01-09T09:45:17.590 回答
2

我认为你是从错误的角度来的。您在问如何在不使用 XCode 的情况下找到内存占用。我认为您应该问的问题是:为什么不能使用 XCode?大概这就是您最初用来开发应用程序的方式?

如果没有 XCode,你几乎是盲目的。你说你将纹理的大小减半,但你怎么知道?当您的应用程序收到低内存警告时,它是否会释放任何多余的内存?( applicationDidReceiveMemoryWarning:)

首先,您是否查看过从 XCode 运行应用程序时的崩溃日志?您应该能够在 XCode 的 Organizer 中看到它们。

我不确定是否有单一的解决方案可以阻止您的应用因 XCode 崩溃。通常,当我的 iPhone 不允许调试时,我只需重新启动 xCode 和手机,它就会重新开始工作。重新启动 XCode 有时会有所帮助。我也会尝试重新安装 XCode 和 iPhone SDK。

于 2010-01-09T15:25:01.597 回答