新的使用XCode仪器来解释iPhone开发的内存警告,需要指导

我正在做一个iPhone游戏,接收内存警告,我没有足够的经验来解释。 我一直在看一些iTunesU的教程,但我还是不是很擅长这个..

在运行我的游戏时,我收到了各种内存泄漏,我想了解如何正确解释仪器中的堆栈跟踪显示。

附上ObjectAllocation仪器输出的截图 仪器输出 。 即使我缩放filter,我不设法过滤ObjectSummary中的数据 看这个截图

当GameScene被初始化并且所有数据被加载(ParallaxBackground,CCSpriteBatchNode)以及Sprite和子弹框被创build(在SpriteFrame的CCArray中)时, 1中的内存使用峰值发生。

大的蓝色峰值只是在加载时间,但应用程序冻结,然后崩溃后一段时间,从图中我看到内存使用(蓝色条)已经下降..所以我不安静得到这一点。 此外,当我尝试使用泄漏仪器的应用程序崩溃..

我知道对于有经验的人来说这是一个非常愚蠢的问题,但是我只需要一些额外的帮助就可以开始使用这个工具集。

我认为内存问题是由于我分配的精灵caching类中的精灵,但我不确定这一点,因此想要调查这使用仪器,但无法find如何看到什么是造成内存警告的对象和如何访问堆栈跟踪

PS:我正在使用iPod第四代,我使用Cocos2D作为库

编辑:我也不明白为什么如果活字节只有1.01 MB的应用程序崩溃,为什么我仍然收到内存警告(见黑旗)。 这是由于某些指针引用某个空variables或由于内存分配过多? 1.01 MB对我来说不太好

编辑2:遵循Marion的build议,我使用活动监视器,并意识到有效的实际内存使用量是55.39 MB。 我误解了“活字节”这个词。 我会试着进一步深入研究这个问题,并且会让现在的问题不被接受,从而让其他人做出贡献。 如果在两天之内我不会有任何其他答案,我会标记为接受当前的答案。 谢谢!

活动监视器

非常感谢!

如果您想查找泄漏点,请使用“泄漏”工具而不是“分配”。 为了弄清楚,此刻使用多less内存,使用ActivityMonitor。

如果您在cocos2d中遇到内存问题,可以尝试清除caching。 在cocos2d中,你可以清除CCTextureCacheCCSpriteFrameCacheCCAnimationCache 。 它将释放未使用的纹理和框架。

如果你想检查是否所有的纹理都从内存中删除,你可以把断点放到CCTextureCache类中,例如调用sharedTextureCache然后查看textures_字典的内容。 或者给这个类添加一些方法来能够转储caching的当前状态。