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

这是在iOS上,设备是iPad。

这是发生的事情:

  1. 我在设备上运行app或调试并使用Xcode运行。
  2. 5分钟后,我收到1级记忆警告。
  3. 一分钟后,我收到2级记忆警告。
  4. 另一分钟后, Program received signal: “0”.

我使用仪器泄漏检查泄漏, 检测到没有泄漏 。 但是,根据活动监视器,我的应用程序最初使用30 MB,并且随着时间的推移增长到超过100mb(大约每秒200kb!)。 所以,Leaks显然没有检测到所有内存泄漏。

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

这就是我接近它的方式,

  1. 使用前缀为所有类命名,以便在Instruments中轻松查看

  2. XCode-> Run-> Run with performance tool-> allocation

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

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

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

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

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