Xcode Memory Graph - 显示增加的内存使用 - 它究竟显示了什么?

时间:2014-10-09 08:07:49

标签: ios objective-c xcode xcode-instruments

在xcode 6中观看调试图时(也可能是5个),在运行我的应用程序时,随着我在屏幕上放置更多特定对象并为其运动设置动画,内存使用会继续增加。当我删除它时似乎没有减少。一旦删除,我相信没有更多的参考。

查看截图: http://i.stack.imgur.com/SnhbK.png

然而,当我使用Instruments来尝试识别正在发生的事情时,只剩下大约12mb,并且Total Bytes继续像预期的那样上升。

查看截图: http://i.stack.imgur.com/VBwce.png

这是正常行为吗? Xcode中的图表究竟是什么?我忽略了什么吗?

在Instruments中,我将Allocation Lifespan设置为All Allocations和Allocation Type设置为All Heap和Anonymous VM以获取上面的屏幕截图。

更新

通过使用Activity Monitor运行Instruments,我能够看到“Real Memory”以与Xcode中显示的相同的速率增加。 @Mark Szymczyk指出OpenGL ES纹理内存分配未在Allocations工具中显示。

通过在Cocos2D 3.1中定期使用以下命令清除纹理缓存,内存使用率一直下降到大约18mb,并在我添加更多精灵时再次开始增加。

[[CCDirector sharedDirector] purgeCachedData];

致Mark Szymczyk指出我的方向 - 谢谢!

1 个答案:

答案 0 :(得分:4)

查看截图,Xcode图表可能显示的是仪器截图中的“总字节数”列。删除对象时,持久字节将减少,但总字节数不会增加。这可以解释为什么Xcode图中的内存使用永远不会消失。

仪器中的“持久字节”列是您应该查看的内容,以确定应用程序的内存使用情况。