是Xcode的调试导航没用?

问题描述 投票:1回答:1

我建立在Xcode的应用程序,现在是深入到项目的内存管理部分。当我使用分配和泄漏我似乎从我在Xcode的调试面板见得到完全不同的结果:特别调试面板似乎显示更高的内存使用情况比我在分配看,它似乎也突显泄漏是,就我可以告诉(1)不存在;(2)被证实不被泄漏的工具存在。这个东西没用,甚至更糟糕,误导?

这是一个新问题:今天告诉我,我是用的内存> 1 GB,但其内存小计显著读<1 GB(和仍然错误,如果分配数据是准确的)。图片下面。

enter image description here

更新:我跑VM Tracker在一个38分钟的会话,并且它似乎虚拟存储器占分配/泄漏和存储器标尺之间的差。图片下面。我不完全知道如何思考这个问题呢。我们的游戏采用了非常大量的被交换纹理。我想这是我们规模最大的游戏常见的(11个篮板,330级水平;每块电路板和地图画面具有独特的艺术品)。

enter image description here

xcode debugging memory-management memory-leaks allocation
1个回答
2
投票

您可能正在使用的内存量规使用调试生成配置在模拟器运行时。这两项会给你误导性记忆的效果。知道如何内存被管理的唯一可靠的方法是使用一个发布版本的设备上运行。仪器使用发布版本的配置,所以它已经将不仅仅是运行并使用存储器标尺更好。

此外,它是Xcode的内置记忆工具,如内存调试一个已知的缺陷,可产生泄漏误报。

然而,仪器有其缺陷也是如此。我的经验是,例如,它不能赶上应用程序启动时产生的泄漏。另一个问题是,人们并不总是知道如何读它的输出。例如,你说:

调试面板似乎显示更高的内存使用情况比我在看到分配

是的,但分配是不是故事的全部。你可能没有看VM分配。那些被单独示出,并往往构成高存储器使用的原因(因为它们包括用于图像后备存储和视图渲染树)。存储器标尺不包括虚拟内存,所以这可能会单独占据了“差异”你以为你看到的。

所以,回答你的问题是:没有,存储器标尺也不是一无是处。它给的,当你可能需要警惕内存问题一个不错的主意。但你那么预计将切换到仪器的正确分析。

© www.soinside.com 2019 - 2024. All rights reserved.