【发布时间】:2013-03-12 13:36:03
【问题描述】:
我正在使用启用 ARC 的 Cocos2d 2.0。我的游戏是随机生成的游戏,所以我需要在游戏中间的场景中加载/卸载纹理(spritesheet-batchnode)。我正在尝试从文件中删除 spriteframes 并删除我希望在中间卸载的 spritesheet 的键纹理。当我在卸载工作表后使用 dumpcachedtextureInfo 时,该 spritesheet 纹理不会显示在 dumpcachedtextureinfo 的日志中。
但是当我使用 Instruments/activity monitor 来分析我的应用程序时,卸载纹理和 spritesheet 后实际内存使用量不会下降。
有没有办法使 dumpcachedtextureinfo 不会显示仍在内存中的纹理? 此外,分配中的我的 livebytes 列显示 4 MB。
正如我在不同的地方读到的,分配不显示纹理内存。
所以我的分配实时字节列显示为 4 MB,我的总纹理内存(如 dumpcchedtextureinfo 日志所示)显示为 84MB,但内存监视器仍然显示实际内存使用量为 84+Spritesheet 大小+实时字节
我无法理解这种区别?
我没有退出场景,所以我不确定ARC是持有内存还是什么?
【问题讨论】:
-
由于您已经在使用 Instruments,请检查是否有任何大块内存仍在“活动”并且可能已泄漏。除此之外,也许您正在查看永远不会减少的总分配列。
-
我担心活动监视器下的“实际内存使用情况”指标。即使在卸载后它也不会减少。我不明白这是为什么?
标签: memory-management cocos2d-iphone automatic-ref-counting instruments