【问题标题】:cocos2d: alloc ccsprite memory 4MB, adding as child to scenes mem=11MBcocos2d: alloc ccsprite memory 4MB, 添加为子场景 mem=11MB
【发布时间】:2011-07-30 15:53:46
【问题描述】:

我已经开始使用 helloworld 模板。 添加了一些菜单并启动了性能工具->分配。 结果:1.9MB 好的,所以空场景是2MB 现在添加了使用 1024x1024 图像初始化的实例变量 ccsprite

CCsprite *test=[CCSprite spriteWithFile:@"img1024x1024.png];

并启动性能工具->分配。 结果:6MB ok,内存中的图像是4MB,+2MB的空 现在用

添加到 schen
[self addChild:test];

性能工具->分配。 结果:11MB 这正常吗? 我作为孩子添加的每个精灵都会使我的内存使用量加倍? 谢谢

【问题讨论】:

    标签: cocos2d-iphone addchild ccsprite


    【解决方案1】:

    添加一个精灵并认为每个精灵都会添加相同数量的分配内存是不合逻辑的。考虑以下几点:

    1. 您可能正在使用相同的纹理 一遍又一遍 大大增加内存。
    2. 加载几个 1024x1024 的精灵是 根本不是正常行为。
    3. 您正在加载的图像可能不是 压缩很多。
    4. 取决于您的应用程序 使内存使用量可能不是 一个问题。

    如果您真的担心内存使用情况,我会添加适当数量的精灵,缩小到您的应用程序将要使用的适当大小,然后添加它们并再次检查 Instruments。

    【讨论】:

    • 也许我玩得不好。
    • 也许我表现得不好。我正在做一个测试:只有一个精灵,比如背景,我选择了一个大图像,这个内存量真的很明显。当我分配 ccsprite *test 分配工具的内存量是我所期望的:未压缩的 png 为 4MB。没关系。我没想到的是,如果我作为孩子添加到场景中,为什么内存量会增加这么多?
    • 我认为我理解得很好。但是您的测试不是真实世界的示例,您最好采用获得有效结果的建议。
    • 我发现cocos2d做的malloc有2个,这里是栈树的链接:link
    • 它们看起来像是来自非常不同的地区,我仍然建议您尝试几张您将使用的大小的图像并进行调查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多