内存泄漏破坏了我的应用程序?

时间:2011-04-21 13:12:55

标签: iphone objective-c memory-management memory-leaks

我现在遇到大麻烦,我的iPhone应用程序由于内存泄漏而一次又一次地终止,我无法判断那些泄漏的位置。告诉我可以采取哪些步骤来解决此问题。

由于

4 个答案:

答案 0 :(得分:4)

您可以使用Instruments查看潜在泄漏的位置。

这是一个很好的教程。 http://mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/

答案 1 :(得分:3)

我认为你这里的术语令人困惑。内存泄漏是指在完成对象后不释放对象。

泄漏不会直接导致崩溃。如果由于未释放大量对象而导致内存不足,则泄漏可能间接导致崩溃。但是,如果你的崩溃发生在模拟器中,那几乎肯定不是这种情况(模拟器的可用内存比设备多得多)。正如丹尼尔所说,你可以使用仪器工具找出泄漏的东西。

另一个好方法是使用XCode静态分析器 - 您可以分析代码并检测最常见的泄漏。

现在,如果您的应用程序崩溃并且由于内存泄漏而导致(您将能够告诉它,因为您将向控制台输出内存警告),那么很可能是您的问题不是泄漏。也许这是一个糟糕的访问(你 over 发布),在这种情况下,你的乐器泄漏工具不会帮助你。

答案 2 :(得分:0)

如果您需要找出泄漏和崩溃的来源。你可以试试这些

  1. 尝试从Instruments中找到尽可能多的泄漏并修复
  2. 为您的可执行参数设置NSZombieEnabled并调试应用程序崩溃
  3. 将所有自动释放对象更改为尽可能使用alloc init。
  4. - 最糟糕的是如果它在尝试了以上三种情况后仍然会崩溃。你在一个线程中编写代码的内存密集型模块并清理该线程。我注意到通常在线程完成后,内存占用更清晰。这只是我的意见,但你应该做以上3个。

答案 3 :(得分:0)

您还可以在XCode中构建+分析您的应用程序(Cmd + Shft + A或产品>分析)。它会告诉你更明显的泄漏。