我正在开发一个基于 cocos2d 的应用程序,现在正在针对分配工具对其进行测试,以检查是否存在泄漏。我注意到有时会发生 16 MB 的 malloc,但我实际上无法说出原因。我猜这与cocos框架有关,但我不确定。
您是否也经历过同样的行为?有时应用程序会在测试过程中因此崩溃。
提前谢谢
安德里亚
一些进一步的细节
看来问题与cocos缓存 Sprite 的方式有关。我正在使用 zwoptex 纹理图集。这是调用堆栈
+[CCSpriteSheet spriteSheetWithFile:capacity:] CCSpriteSheet.m:69
-[CCSpriteSheet initWithFile:capacity:] CCSpriteSheet.m:104
-[CCTextureCache addImage:] CCTextureCache.m:243
-[CCTexture2D(Image) initWithImage:] CCTexture2D.m:207
-[CCTexture2D(Image) initPremultipliedATextureWithImage:pixelsWide:pixelsHigh:]
在执行的那一刻,我实际上正在加载我拥有的最大的 Sprite 。大约是900KB。而其他的则很少。是不是我使用cocos的方式不对? 例如,是否存在旨在减少此类峰值的参数。 不过,我希望一旦缓存了图像,我就不会在任何需要它的时候加载它。相反,每当我一段时间不使用此类 Sprite 时,我都会遇到新的峰值。 然后我猜测如果我保留图像,缓存将不会被清除,但尽管我保留了它,但 malloc 仍然发生。
我还想知道为什么在模拟器而不是设备上运行时应用程序 RAM 占用空间从 3MB 变为 80MB
最佳答案
我在使用 iSimulate 时也经历过同样的情况(注册加速度计数据和多点触控(>2)并传输到 iSimulator)。
关于iphone - cocos2d 应用程序中无法解释的 16MB malloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5318057/