事情是这样的,内存使用情况我是从任务管理器看的
一进入游戏是: 70M
然后我在update里面加了一个静态变量, 每帧加+1,再=1000的时候释放
释放前的峰值是: 220M
执行 Director::getInstance()->getRunningScene()->removeAllChildrenWithCleanup(true);
然后 TextureCache::getInstance()->removeAllTextures();
这时候降到了: 160M… 我想知道那90M的纹理被谁引用了(我们 armature cocostuio,其他的问题应该不大)
然后我改了下源码
void TextureCache::removeUnusedTextures()
{
for( auto it=_textures.cbegin(); it!=_textures.cend(); /* nothing */) {
Texture2D *tex = it->second;
if( tex->getReferenceCount() == 1 ) {
CCLOG(“cocos2d: TextureCache: removing unused texture: %s”, it->first.c_str());
tex->release();
_textures.erase(it++);
} else {
tex->release();//添加了这句
++it;
}
}
}
然后把 removeAllTextures(); 的地方换成了循环执行了1000次
这时候的内存:70M
证明了纹理没释放所造成的内存问题。。。希望版主解答一下
