2015-10-12 41 views
11

当我运行在Xcode我的应用程序,很显然,我有内存泄漏:Xcode中显示内存泄漏,但仪器不

enter image description here

当我提出一个自定义视图控制器的内存增加,但当我解雇它时,它不会退缩。

所以我也使用仪器的配置工具的检查,但讲述了一个不同的故事:

enter image description here

正如你可以看到,仪器显示尖峰当我提出那个视图控制器,但内存使用量降回之前的等级被解雇。

我检查了我的代码至少15次,我个人无法找到任何内存泄漏,因此同意仪器。我还实施了在我所有的对象会得到分配,像这样的deinit功能:

deinit { 
    print("Deinnited \(id)") 
} 

并打印到控制台如预期中的所有对象。

可能会发生什么?我使用:

  • 的iOS 9.0
  • 的XCode 7.0版(7A220)
  • 雨燕2.1

无论是对运行和配置文件的模式是在 “调试”

+0

只是检查,但你如何驳回意见?还有空闲时间吗?我发现乐器往往只显示软件方面。它不会告诉你那只是没有清理干净的内存。如果没有空闲时间,操作系统无法清理内存。你有单身吗?或共享实例进行兑现?可能是一个强大的参考周期。尝试设置的东西变弱。只是抛出一些想法...... –

+0

如果你多次重复打开关闭,你会发现Xcode的内存消耗正在增加吗? – Darko

+0

@达科是的。我看到Xcode中的内存消耗正在增加,但不是在乐器上。 –

回答

3

多后研究Google和其他论坛,这似乎是XCode的一个缺陷。

+0

从7.2.1版本开始,这仍然是Xcode中的一个错误。 –

2

更多的工具使用经验后更新以前的文字。

enter image description here

使用仪器在Xcode 7.2.1最近的一些实验后,我注意到泄漏图表并不总是工作。在杀死仪器和模拟器的过程之后,再次运行......图表出现了。似乎存在间歇性问题,尚未找到原因。

enter image description here

+0

这并没有为我揭示这个问题。我能够使用Leaks个人资料模板进行个人资料分析,并发现泄漏事件并未发生,因为我一直在通过每次通过的方式继续进行泄漏检查。 Xcode 7.x的内置内存分析器确实有些不妥。仪器显示“持续字节”在应用程序的整个生命周期中保持稳定,而“总字节数”持续增长。我的猜测是他们在Xcode中使用了错误的字段,因为这个数字非常接近仪表分析时显示的“总字节数”值。 –

+0

经过最近在Xcode 7.2.1中使用仪器的实验后,我注意到泄漏图并不总是工作。在杀死仪器和模拟器的过程之后,再次运行......图表出现了。似乎存在间歇性问题,尚未找到原因。 –

5

这是一个非常恼人的Xcode错误或者一个功能:)如果你从苹果的角度看它。

我今天遇到它,这里是如何解决它。

  1. 按你设置方案(旁边的xcode停止按钮)应用程序的名称

  2. 选择“编辑计划”

  3. 选择“运行”(弹出左侧-up窗口)

  4. 选择 '选项'(弹出窗口的顶部)

  5. 取消选中“ENABL e backtrace recording'(最后一个选择需要向下滚动)

缺点是,如果您崩溃,回溯将被禁用。所以我想你想根据你想要关注的东西切换那个开关。

在'profile'方案中,回溯未启用,因此在使用调试导航器(运行方案)时只看到内存泄漏,而在仪器(配置文件方案)中看不到内存泄漏。

/Anders。

+0

该死的......非常感谢@Andres Cedronius – user1872384