Memory management Cocos2d游戏的内存使用估计

Memory management Cocos2d游戏的内存使用估计,memory-management,cocos2d-iphone,automatic-ref-counting,instruments,Memory Management,Cocos2d Iphone,Automatic Ref Counting,Instruments,我使用的是启用了ARC的COCOS2D2.0。我的游戏是一个随机生成的游戏,所以我需要加载/卸载纹理(SPRITESHET BATCHNOTE)在一个场景中的游戏中。我试图从文件中删除PruteFraseScript,并为我希望在中间卸载的SpReSeGET键移除纹理。卸载工作表后使用dumpcachedtextureInfo时,该spritesheet纹理不会显示在dumpcachedtextureInfo的日志中 但是,当我使用Instruments/activity monitor评测我的

我使用的是启用了ARC的COCOS2D2.0。我的游戏是一个随机生成的游戏,所以我需要加载/卸载纹理(SPRITESHET BATCHNOTE)在一个场景中的游戏中。我试图从文件中删除PruteFraseScript,并为我希望在中间卸载的SpReSeGET键移除纹理。卸载工作表后使用dumpcachedtextureInfo时,该spritesheet纹理不会显示在dumpcachedtextureInfo的日志中

但是,当我使用Instruments/activity monitor评测我的应用程序时,卸载纹理和精灵表后,实际内存使用量不会下降

有没有一种方法使dumpcachedtextureinfo不会显示仍在内存中的纹理? 另外,分配中的livebytes列显示4MB

正如我在不同的地方读到的那样,分配并没有显示纹理记忆

因此,我的allocations live bytes列显示为4MB,dumpcchedtextureinfo日志显示的纹理内存总量为84MB,但内存监视器显示实际内存使用量为84+Spritesheet size+live bytes

我无法理解这种差异


我没有退出场景,所以我不确定ARC是否保存了内存或是什么?

一些有用的注释

  • 很好地解释了Cocos2d中的内存管理

  • 要检查总内存分配,请使用:仪器->活动监视器

  • 要检查内存泄漏,请使用:仪器->泄漏

由于您已经在使用仪器,请检查是否有大块内存仍在“运行”,或者可能泄漏。除此之外,也许您看到的是“总分配”列,它永远不会减少。我关心的是“活动监视器”下的“实际内存使用”指标。即使卸载后,它也不会减少。我不明白为什么会这样?我已经通过了那个链接,是的,它非常有用。我的问题是没有优化内存。我的问题是知道我的应用程序在某一时间使用的确切内存。在instrument中,您可以看到…希望您知道:-另外:选择分配,对象列表。搜索类名(即CCTexture2D)。如果在它旁边有一个点,它仍然存在(在内存中)。查看从缓存中删除tex时是否会发生变化。我使用allocations-objectlist-cctexture2d进行了检查。我看到在cctextue2d对象下创建的活动对象的堆栈跟踪。在那里,我可以看到加载精灵表的方法。Real Memory向我显示了总大小,包括我正在卸载的纹理和dumptexturecacheinfo中未显示的纹理。使用ARC时,释放纹理是否足够?如果我不退出现场,ARC如何取消分配?我在游戏场景中。这是在我启用ARC并迁移到ARC后开始的。我可能缺少什么?如果我创建一些精灵和动画,并在它们上运行一些操作。在游戏的后期,我需要卸载包含这些精灵的纹理,我移除这些精灵,移除AnimationByName并移除纹理。我还需要做些什么来卸货吗?