【问题标题】:Memory Leaks profiler in Xcode - How reliable is it?Xcode 中的内存泄漏分析器 - 它有多可靠?
【发布时间】:2012-02-22 17:04:18
【问题描述】:

我尝试在 xCode 中使用内存分析器。

它将许多对象标记为泄漏对象,但是当我打开对象的历史记录时,对该对象的最后一个操作是将对象引用的计数设置为零的释放。

该工具中显示的结果有多可靠?它们是潜在的内存泄漏还是已确认的?

如果它肯定是内存泄漏,为什么当我最后一个引用计数为零时会发生这种情况?我配置 xCode 的分析器的方式可能有问题(我只需按 cmd + i)吗? 贾米尔

【问题讨论】:

  • 分析仪有没有显示什么?也许你可以展示一些泄漏对象的代码(你实例化和释放它们的地方)。
  • Analyzer(静态分析工具)很好,我修复了它提出的所有问题。
  • 分析器准确,但难以解释。
  • 有时可能是您的对象中的某些东西导致了泄漏。

标签: objective-c ios xcode ios4 instruments


【解决方案1】:

如果您要求分配工具跟踪保留和释放,则分配工具非常准确:它可以正确跟踪它们。它还正确报告了一个对象在之前历史中存在的数量与现在存在的数量之间的差异。

泄漏工具并不总是准确的:例如,根据我的经验,它经常会漏掉泄漏(我从未听说过它会报告误报,但我想这是可能的)。不过请记住留出足够的时间,因为默认情况下,泄漏工具每 10 秒才拍摄一次。此外,使用 heapshots 来磨练对象的生命周期。

【讨论】:

  • 感谢@matt,分配工具将对象显示为“活动”。
  • 可能值得一提的是,显示为泄漏的对象在非弧代码(静态库)中分配和自动释放,然后保留在弧类中
【解决方案2】:

啊,我发现了错误!

我没有在这些实例的类的 dealloc 中调用 [super deallco]

【讨论】:

    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多