Memory Cocos2D CCTextureCache保留在内存中
对于滚动条,我使用addImageAsync以异步方式加载图像 我开始分析,看到一些内存问题,图像保留在内存中 然后我决定比较addImageAsync和spriteWithFile,以及加载和直接卸载图像。 完成所有加载后,addImageAsync将使用更多内存 在加载许多图像的循环中,如果我使用Memory Cocos2D CCTextureCache保留在内存中,memory,cocos2d-iphone,textures,cctexturecache,cocos2d-iphone-2.x,Memory,Cocos2d Iphone,Textures,Cctexturecache,Cocos2d Iphone 2.x,对于滚动条,我使用addImageAsync以异步方式加载图像 我开始分析,看到一些内存问题,图像保留在内存中 然后我决定比较addImageAsync和spriteWithFile,以及加载和直接卸载图像。 完成所有加载后,addImageAsync将使用更多内存 在加载许多图像的循环中,如果我使用 CCSprite* sprite = [CCSprite spriteWithFile:previewPath]; NSLog(@"sprite created"); [[
CCSprite* sprite = [CCSprite spriteWithFile:previewPath];
NSLog(@"sprite created");
[[CCTextureCache sharedTextureCache] removeTexture:sprite.texture];
NSLog(@"texture removed");
sprite = NULL;
NSLog(@"sprite nulled");
我最终得到了72.4MB
如果我使用:
[[CCTextureCache sharedTextureCache] addImageAsync:previewPath withBlock:^(CCTexture2D *tex) {
[[CCTextureCache sharedTextureCache] removeTexture:tex];
NSLog(@"texture removed");
[CCTextureCache purgeSharedTextureCache];
}];
我最终得到了108.7MB
这里有问题吗,还是我做错了什么
(使用cocos2dv2)您是如何测量内存消耗的?你什么时候测量的?您是否检查过仪器中的活动对象以确保相关对象已被释放?我认为图像会被缓存,除非发出内存警告或用户手动清空缓存。