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

为什么iOS应用程序在空闲时会导致Xcode内存泄漏?,ios,xcode,memory-leaks,Ios,Xcode,Memory Leaks,我正在使用SpriteKit和Xcode 7.3在运行El Capitan的Mac mini上编写一个Swift游戏(这两个版本都在最近几天更新) 在我启动后不久,我的Mac mini开始崩溃。错误日志表明内核死机可能是由于内存泄漏而发生的&进程被标识为Xcode。查看活动监视器,我可以看到,当这个特定的应用程序加载到Xcode中时,Xcode使用的内存会快速增加,即使应用程序只是坐在那里无所事事 当其他应用程序被加载并空闲时,内存使用量会像您所期望的那样或多或少保持不变。我在谷歌上搜索了几个小

我正在使用SpriteKit和Xcode 7.3在运行El Capitan的Mac mini上编写一个Swift游戏(这两个版本都在最近几天更新)

在我启动后不久,我的Mac mini开始崩溃。错误日志表明内核死机可能是由于内存泄漏而发生的&进程被标识为Xcode。查看活动监视器,我可以看到,当这个特定的应用程序加载到Xcode中时,Xcode使用的内存会快速增加,即使应用程序只是坐在那里无所事事

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


就我而言,这是一个奇怪的问题。除了从一个新的项目开始&逐渐添加代码以查看是否/在何处再次发生之外,我不知道如何开始找出导致这种情况的原因。如果其他Xcode用户有任何想法,我将不胜感激。

您可以做很多事情来开始诊断这个问题。首先,你说只有一个应用程序在这样做。因此,这表明问题是应用程序问题,而不是XCode问题。这是一件好事:-)

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

另一件事是尝试探查器泄漏监控。这也可能告诉你你的应用程序里发生了什么


最后,您的代码中是否有以某种循环方式执行的内容。例如,在主屏幕上设置动画的东西。也许这是在泄露。

非常感谢Drekka&Adrian B的快速回答,但通常情况下,只要我发布一个问题,我就会偶然发现一些信息,这些信息导致理解和(在本例中是部分)解决方案。为了寻找另一个问题的答案,我在苹果开发者论坛上遇到了一个帖子,其他几个人也在报道同样的问题

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

干杯


RB

你没有

skView.showPhysics = true 
打开了吗?
正如您所描述的,这正是造成内存问题的原因。

除了drekka的建议之外,您可能会发现此链接很有帮助。这些是苹果公司关于WWDC仪器的视频。不。我没有在这个应用程序中使用物理,但很高兴知道以后的参考。Thx用于输入。