如何检测iPhone应用程序中的内存泄漏/电池消耗

时间:2009-02-12 05:02:55

标签: iphone cocoa-touch

我担心我的iPhone应用程序的版本1.2会引入内存泄漏。当我使用1.2版本时,我注意到我的电池耗电量比1.1版本要快得多。相比之下,1.1版本的电池可以持续一整天,晚上仍然有充足的果汁但是1.2我发现我必须在下午中午插上电池。

内存泄漏(或其中很多内容)会导致电池排水量增加,还是我还有其他事情发生?

我的应用程序使用的唯一有趣的事情是AVAudioPlayer类播放一些caf音频文件。除此之外,只有几个视图与表视图。

我在applicationWillTerminate方法中调用AudioSessionSetAcvie(false),所以我认为这不是引起这种情况的音频会话。我没有让我的应用程序激活电池耗尽。它足以使用它一段时间然后退出。所以我很确定我会留下一些东西,我只是不确定是什么。

我尝试使用乐器工具,但看起来你无法使用设备上运行的应用程序(由于某些原因我的应用程序停止在模拟器中工作)

关于如何找到导致电池耗尽的问题的任何想法?

3 个答案:

答案 0 :(得分:3)

内存泄漏不会导致电池使用量增加。但是,如果内存泄漏仍然存在,最终会收到内存警告,如果无法清理内存,则应用程序将被终止。

提高电池利用率通常意味着某些因素导致代码继续运行。解决此问题的最佳方法是在仪器下运行您的应用程序(可能使用Sampler)并让它处于您确信通常会耗尽电池的状态。检查Sampler的结果,如果您运行了代码,您将能够看到它的堆栈跟踪。

希望一旦找到正在运行的代码,就会明白如何阻止它。

答案 1 :(得分:1)

内存泄漏不会导致电池使用量增加,正如Nilobject所说。

我会尝试一次一个地评论各种功能区域,以尝试缩小导致问题的区域。在你的情况下,首先要尝试的是删除音频。如果,一旦你完成了,电池使用率恢复正常,你知道在哪里看得更深。

答案 2 :(得分:0)

  

(由于某种原因,我的应用程序停止在模拟器中工作)

我会修复它并使用工具来修复性能错误。修复这个困难的缺陷永远不是一个好主意。