【发布时间】:2012-12-28 09:12:28
【问题描述】:
我整个上午都在为此苦苦挣扎。还不能在设备上进行测试,我依靠分析器显示的内容来粗略地看到没有重大问题。其中一个我认为很严重的事实是,无论何时我在 Cocos2d 或自定义代码中创建 2D 纹理 - 直接提供 openGL,我在分析器中都将我的所有纹理显示为两个分配。
例如当我创建一个大约 1MB 数据的纹理 512x512x4 时,我的活动字节使用量增加了 2MB,我可以在活动对象列表中看到两个重的内存块,每个 1Mb - 与我的纹理完全相同。
让我强调这一点 - 这不是我提供给 glTexImage2D() 的原始图像文件,它在析构函数中被删除,我已经检查了很多次。此外,我在 Cocos2d 示例项目中也观察到的问题 - 很简单,纹理的所有内存都增加了一倍。
下面两张截图——一张来自 cocos2d 应用程序,显示了两个 600KB 的纹理,每个纹理在分析器中显示为四个分配的对象:
并直接使用openGL和通过libpng提供的图像自定义分配和创建纹理-显示为两个1Mb的实时对象。
如果有人能在这方面启发我,我将不胜感激。也许在设备情况下看起来不同。
问候, 秒。
【问题讨论】:
-
我有完全相同的铅。你找到这个双重分配的原因以及如何避免/释放它了吗?
标签: ios memory cocos2d-iphone profiling textures