在一个场景中,例如我有一个商城界面的prefab,我加载prefab,然后销毁 – 循环操作,
内存只会增加, 我destory后内存也不减少 是为什么?
版本是1.4rc3
在一个场景中,例如我有一个商城界面的prefab,我加载prefab,然后销毁 – 循环操作,
内存只会增加, 我destory后内存也不减少 是为什么?
版本是1.4rc3

内存只会加 不会减
或者切换场景,2个场景之间不停的切换,勾选了自动释放资源,内存还是会一直涨涨涨。。 而且我在加载prefab的地方加了 cc.loader.setAutoReleaseRecursively(prefab, true)
prefab你怎么释放的啊?
cc.loader.setAutoReleaseRecursively(prefab, true) 每次加载我都会加这句代码,这样对不对?
不是,我是说你怎么释放资源的,就只有这一句代码来释放吗?
你prefab是用loadRes加载的还是属性检查器里引用的?如果是通过loadRes加载的,需要手动调用release来释放
不是把。。 我每次都要加载很多prefab,难道在切换场景的时候我都要一一自己手动释放吗。。 那上面那个函数的作用是什么你知道吗?cc.loader.setAutoReleaseRecursively
额,不好意思,我看错了
只是因为我的项目里有动态加载的地方(主要是atlas)都是手动release,没有出现内存增长的情况
能否简单说下如何手动release呀? 比如怎么记录哪些是动态加载的资源?
这是我的release代码
var clips = this.wear.getComponent(cc.Animation)._clips;
cc.loader.releaseAsset(this.wear.getComponent(cc.Sprite).spriteFrame);
cc.log("before = " + "atlas/" + this._wear)
for (var key in clips) {
if (clips.hasOwnProperty(key)) {
var element = clips[key];
var temp = cc.loader.getDependsRecursively(element);
cc.loader.release(temp);
}
}
clips.splice(0, clips.length);
cc.loader.releaseRes("atlas/" + this._wear, cc.SpriteAtlas);
主要是释放animation里所有的spriteFrame,直接释放animation是不行的,动态加载的资源的话,应该只有自己记录,不需要的时候释放,其实我对内存这些东西不是很了解,以上代码是在panda 老师和 jare老师的指教下写出来的
我场景里有很多动态加载的sprite、prefab、json、dragonbone, 我怎么才能手动释放这些。。 每一个相对完整的说法吗。。 这样1个1个手动去搞。 不是坑爹吗。。。
这个wear是个prefab ?
var temp = cc.loader.getDependsRecursively(wear);
这样不能把动画释放了么?
要一个一个动画去释放?
哭了。 这样还不如以前的引用计数,autoRealease方案。 搞来搞去 内存还是只增不减。。有没有一个相对完整点的内存解决方案呀。。
wear就是一个普通的节点
不是很清楚,我是遍历释放clip
等会儿我越说越乱,容易让人误会,具体等官方大神解答吧,就当我放屁吧
别沉啊。。。
没用 内存问题 建议你做好这方面的研究之后 再决定是不是要用cocos creator