在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指出我的方向 - 谢谢!
答案 0 :(得分:4)
查看截图,Xcode图表可能显示的是仪器截图中的“总字节数”列。删除对象时,持久字节将减少,但总字节数不会增加。这可以解释为什么Xcode图中的内存使用永远不会消失。
仪器中的“持久字节”列是您应该查看的内容,以确定应用程序的内存使用情况。