有什么办法获取cc.loader当中究竟有多少纹理内存吗

如题,cc.loader 有办法获取内存当中究竟有多少纹理内存吗,类似以前的textureCache的dump方法,方便调试资源究竟有没有被正确释放

关注,我也想了解监测资源是否被释放的方法。

cc.loader.release 也没有任何返回,假如我传入错参数我都不知道究竟有没有release成功,本想通过打印里面究竟有多少资源内存,但是也没找到相关接口

内存的我不知道,但是可以在chrome的任务管理器里看显存

按f12打开开发者工具后按 shift + esc就可以了

这种只能查看内存总量,但是没办法得到究竟是那些资源没释放吗?比如我都直接调用了cc.loader.releaseAll()了,但是贴图还是能正常显示,感觉跟没release一样,很疑惑

你要的可能是cc.loader._cache

那你可能没有正确的释放,我这边释放了纹理直接没有了,并且我如果加载很多纹理,释放之后GPU内存会明显减少,还有就是在chrome的控制台打印cc.loader,看看_cache里还有没有你释放的纹理,如果没有了,并且其他地方没有引用,那就是释放了

这个确实能打印出来了

但是执行了cc.loader.releaseAll 之后cc.loader._cache 也是空的了,为啥贴图还能显示的呢,难道cc.loader.releaseAll不能彻底释放吗

假如我有A 和 B 使用了贴图 C, A执行destroy的时候尝试release 贴图C, 但是B还在引用贴图C,执行release C之后,B还能正常显示贴图C,这个正常吗

因为你释放了只是释放了cc.loader._cache里的缓存,如果你在其他地方还引用了这个纹理,比如你在一个sprite里引用了这个纹理,那么这个纹理并不会被释放

所以释放纹理之前需要先清空对纹理的引用

大概好像就是这样,具体原理要 @jare 来解释

其实我想要的就是究竟有多少纹理还在被引用,这个cc.loader是不是没办法知道的

其实就是想cc.loader.release 释放,结果就是没释放成功反而造成了内存泄漏,事与愿违啊,蛋碎

我不会用chrome调试,我是用模拟器看的,释放之后GC一下,一般如果释放了,内存会马上下降的,如果没有下降,有可能就没有释放,但是好像用chrome调试更好一些,不过我一直没空去看怎么调试:joy:

不知道这个cc.loader是不是就是官方最后方案了,如果是得自己重新搞一套

对了,话说你怎么知道是缓存在cc.loader._cache里的,是哪个文档或者代码可以查,我也想看看

源码,或者运行的时候看