memory-management - 估算 Cocos2d 游戏的内存使用情况

标签 memory-management cocos2d-iphone automatic-ref-counting instruments

我正在使用启用了 ARC 的 Cocos2d 2.0。我的游戏是一个随机生成的游戏,所以我需要在游戏中间的场景中加载/卸载纹理(spritesheet-batchnode)。我正在尝试从文件中删除 spriteframes 并删除我希望在中间卸载的 spritesheet 的键的纹理。当我在卸载工作表后使用 dumpcachedtextureInfo 时,该 spritesheet 纹理不会显示在 dumpcachedtextureinfo 的日志中。

但是当我使用仪器/事件监视器来分析我的应用程序时,在卸载纹理和 Sprite 表后,实际内存使用量并没有下降。

有没有办法让 dumpcachedtextureinfo 不显示仍在内存中的纹理?
此外,我在分配中的 livebytes 列显示 4 MB。

同样,当我在不同的地方读到分配不显示纹理内存时。

所以我的分配实时字节列说 4 MB,我的总纹理内存如 dumpcchedtextureinfo 日志所示显示为 84MB,但内存监视器仍然显示实际内存使用量为 84+Spritesheet 大小+实时字节

我无法理解这种差异?

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

最佳答案

一些对你有用的笔记

  • This Cocos2d memory optimisation很好地解释了 Cocos2d 中的内存管理。
  • 要检查总内存分配使用情况:Instrument->Activity monitor。

  • enter image description here

    enter image description here
  • 要检查内存泄漏,请使用:Instrument-> Leaks
    enter image description here
  • 关于memory-management - 估算 Cocos2d 游戏的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15574697/

    相关文章:

    c - linux 内存管理 - 如何获得 "Random xxx offset"?

    c++ - C++ std::string 堆内存分配的保证?

    objective-c - Objective-C 中的自动释放池 - 释放主自动释放池?

    iphone - 触摸由两层处理

    objective-c - 调用 makeViewWithIdentifier :owner: causes ARC to re-create ivar

    c - 我应该如何释放指向字符串的指针数组?

    cocos2d-iphone - 创建我的 cocos2d 应用程序存档时出错

    ios - 如何解决 Swift 4 URLSession.downloadTask 中的内存循环问题?

    objective-c - CoreData 如何使用 Search 和 ARC 过滤 NSFetchedResultsController

    objective-c - 在 cocos2d 中检测 Sprite 上的透明部分?