我猜“#Net”栏目是最有趣的,虽然我不太明白这是什么意思。当前分配的对象总数?即使我什么都不做,它也会一直在变化。
是否存在任何良好的“经验法则”,以确定是否存在内存泄漏?
答案 0 :(得分:3)
您可能会发现本教程很有用:http://www.mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/。
同样,还有一个静态分析器可以直接分析您的源代码:http://clang.llvm.org/StaticAnalysisUsage.html。
答案 1 :(得分:2)
通常,如果在完成所有基本操作一次或两次后应用程序的内存占用量继续增长,那么您可能会发生内存泄漏。总内存占用量位于“Net Bytes”列中。 “总体”列包括程序整个运行中的每个分配,而“净”列则减去解除分配。
然而,根据我的经验,“泄漏”仪器比ObjectAlloc更好地捕获内存泄漏。只需在Xcode中选择“运行>使用性能工具开始>泄漏”并运行您的程序一段时间。如果Leaks开始显示泄漏的块,那么你就会泄漏。它将告诉您每个分配,保留,释放和释放任何泄漏块的堆栈跟踪,并且您可以双击堆栈跟踪以跳转到代码中的那个位置。只需单击窗口底部的小半阴影方形按钮,即“Leaked Blocks”标签的左侧,确保打开“扩展详细视图”。要获取分配列表,请单击将鼠标悬停在块上地址旁边的小“圆形三角形”显示三角形。