帮助查找内存泄漏(一般提示)

时间:2011-01-18 04:12:24

标签: xcode ios memory-leaks instruments

这是在iOS上,设备是iPad。

以下是发生的事情:

  1. 我在设备上运行app或调试并使用Xcode运行。
  2. 5分钟后,我收到1级记忆警告。
  3. 一分钟后,我收到2级记忆警告。
  4. 另一分钟后,Program received signal: “0”.
  5. 我使用仪器泄漏检查了泄漏,检测到没有泄漏。 但是,根据活动监视器,我的应用程序最初使用30 MB,并且随着时间的推移增长到超过100mb(大约每秒200kb!)。所以,Leaks显然没有发现所有内存泄漏。

    所以我的问题是:如果Leaks无法检测到它,是否有找到它们的一般提示,是否有更好的工具来查找这些泄漏?

3 个答案:

答案 0 :(得分:6)

这就是我接近它的方式,

  1. 使用前缀为所有类命名,以便在Instruments

  2. 中轻松查看
  3. XCode->运行 - >使用效果工具运行 - >分配

  4. 现在停止您的应用并在搜索框中输入您怀疑泄漏的类名称。 (这是前缀很方便的地方)。启动仪器再次使用“录制”按钮

    1. 在分配对象时,活动列应该上下移动。请注意,如果它没有下降,则说明有泄漏。

答案 1 :(得分:1)

在您提到的情况下,始终没有必要泄漏。您可能在此处提到的执行时间点使用了大量自动释放的对象。 您可能正在向集合对象添加大型对象。如果是这种情况,请为该情况使用单独的自动释放池,减少应用程序的内存占用。

答案 2 :(得分:0)

如果您可以使用工具来查找泄漏,这是首选,但如果完全难倒,我会使用另一种技术。

从注释几乎所有内容开始,然后一次慢慢添加一个组件,直到再次发生内存泄漏。这样,您就可以了解产生问题的函数或代码块。