为什么iOS应用程序在空闲时会导致Xcode中的内存泄漏?

时间:2016-04-07 02:44:59

标签: ios xcode memory-leaks

我正在使用带有Xcode 7.3的SpriteKit在运行El Capitan的Mac mini上编写一个Swift游戏(两者都在过去几天更新)。

我开始后不久,我的Mac mini开始崩溃。错误日志表明可能由于内存泄漏而发生了内核恐慌。该过程被确定为Xcode。看一下Activity Monitor,我可以看到当这个特定的应用程序加载到Xcode中时,Xcode使用的内存会相当快地增加,即使App只是坐在那里什么都不做。

加载其他应用时&空闲时,内存使用量或多或少保持不变,如您所料。我用谷歌搜索了几个小时的线索,但只能找到信息。关于应用程序运行时的内存泄漏&如何用仪器检测它们。

就我而言,这是一个奇怪的问题。我不知道如何开始弄清楚造成这种情况的原因除了从一个新项目开始逐步添加代码以查看它是否再次开始发生。我很感激其他Xcode用户可能有的任何想法。

3 个答案:

答案 0 :(得分:1)

你碰巧没有

skView.showPhysics = true 

开启? 知道这会引起内存问题,正如您所描述的那样。

答案 1 :(得分:0)

您可以采取一些措施来开始诊断此问题。首先你说只有一个应用程序这样做。所以这表明问题是应用程序问题而不是XCode。这是一件好事: - )

接下来,我将开始使用分析器来监视应用程序中的内存和分配的对象。尝试定期拍摄内存快照,并查看自上一次快照以来分配的内容。然后,探查器可以帮助您深入了解泄漏的对象,并查看它们的保留和释放位置。这可能会为您提供所需的线索。

另一件事是尝试是剖析器泄漏监控。这也可能会告诉你在你的应用程序内部发生了什么。

最后,您的代码中是否有任何东西在某种循环中执行。例如,在主屏幕上激活的东西。也许这就是泄漏。

答案 2 :(得分:0)

非常感谢Drekka&阿德里安B为你的快速答案,但是,一如既往,我发布一个问题,我偶然发现了一些导致理解的信息。 (在这种情况下是部分)解决方案。在寻找不同问题的答案时,我在Apple开发者论坛上遇到了一个主题,其他几个人正在报告同样的问题。

它与SpriteKit场景编辑器的使用有关。因此它与应用程序相关,对我而言,它发生在我曾经使用过场景编辑器的唯一应用程序,但实际上它是一个Xcode错误。如果场景编辑器窗口打开(即选择了.sks文件),即使场景为空,Xcode也会以大约1MB /秒的速率开始泄漏内存。如果关闭该窗口,泄漏就会停止。即使Xcode被最小化,也会发生这种情况。显然,它已被报道为一个错误。我想现在的工作就是接受泄漏,同时修改你的场景&然后在你完成时关闭编辑器(或者在代码中做所有事情)。

干杯,

RB