Cocos Creator 通用框架设计 —— 资源管理

mark

mark

mark

mark1

mark1

mark

mark

mark

mark

1mark

我觉得cc.loader来管理足够了 你这样做资源还不是在内存里? 又没有释放所有依赖的资源 所以只有十分确定不再在使用的资源 才会释放 一个游戏里有多少是用了一次就要从内存释放的呢

/**
 * 通过 id(通常是资源 url)来释放一个资源或者一个资源数组。
 * 从 v1.3 开始,这个方法不仅会从 loader 中删除资源的缓存引用,还会清理它的资源内容。
 * 比如说,当你释放一个 texture 资源,这个 texture 和它的 gl 贴图数据都会被释放。
 * ...便于在设备内存告急的情况下更快地释放不再需要的资源的内存。
 */
cc.loader.release

内存占不了多少释不释放都没事,内存大到一定程度还是释放的好

mark

游戏内容达到一定级别 不释放可能再申请不到内存!





好像如果同时有两个预制体引用同一张图片,在通过ResLoader去分别释放两个预制体,这张图片的引用还会存在,并不会被移除

在代码中我并没有看到清除被依赖资源的引用,我目前想法是循环_resMap清除引用,但怕后面资源太大,每次清除都会去循环一次,不知道大大有什么方法介绍一下

有的,当一个资源可以被释放时,delDependKey 会递归调用_release,从而释放其依赖的所有资源。前面说的两个资源引用相同的图片没有释放我等下回去看看。

bug修复了,你可以pull一下最新的代码

Mark

吐槽下…我试了下先dump-> load->release用浏览器测试下 感受不到内存的变化 这个demo显得有点微不足道 只加载一个再释放 这内存占用我是捕获不到差别 虽然cc.loader._cache的资源数量是少了 但是实际内存占好像和这个不是绝对的关系吧?