xcode调试(creator1.5.1):
loadres 加载资源,内存蹭蹭地往上涨,然后我用其对应的 releaseRes释放资源,却不见内存下降,有遇过的么???
也测试过用loadResDir加载并用releaseResDir进行释放,只见内存上涨不见内存下降
有测试过加载spine文件和png文件,结果都是一样,求解惑。。。
什么类型的资源?有可能是依赖的资源没有释放
这是测试用loadRes和releaseRes spine文件
如果没有调用cc.sys.garbageCollect,则内存一点都不会被释放,测试等了5分钟,内存还是一点没降
调用了cc.sys.garbageCollect内存降了大概%5
这是loadResDir和releaseResDir,如果没有调用cc.sys.garbageCollect,内存一点没降,调用后则内存降下来了,但依然会有大概6M的遗漏,大概0.5秒后再调用一次上图中的releaseResDirAll这6M内存也能被释放
测试加载图片dir和释放,未调用cc.sys.garbageCollect未能看到释放,调用后全被释放了
以上未能看到释放时长都等了3~5分钟,新建测试项目,场景里没有使用这里加载到的资源

是我用的姿势不对么。。。
哦,这个内存下降有延迟是正常的,因为 VM 内部也会缓存内存,不会频繁分配和释放内存。 loadRes/releaseRes spine 时,由于 spine 关联的纹理没释放所以内存会有残留这是正常的。可以用 cc.loader.getDependsRecursively 来辅助释放所有关联的资源。

这样子加载的spine然后再这样释放内存,手动调用cc.sys.garbageCollect还是没用看到内存释放的啊

用 cc.loader.getDependsRecursively 来辅助释放所有关联的资源依然会有内存没有被释放,再调用一次releaseResDirAll才可以(spine做测试)
另外想咨询一下内存下降有延迟,但是xcode查看如果不手动调用cc.sys.garbageCollect内存一直不能被释放(debug模式)
getDependsRecursively 传入的参数应该是资源而不是 loadRes 时用的 url
这是正常的,内存回收本来就不是必定会触发的
getDependsRecursively的api中说:owner 参数接收以下几种类型:1. 资源 asset 对象;2. 资源目录下的 url;3. 资源的 uuid。
难道又是没有更新文档的锅?
哦,文档没错,是我搞错了,那麻烦你看下 deps 拿到的值对不对
cc.loader.getDependsRecursively 如果传入的是 url,会匹配到不同类型的同名资源(Texture2D 之类的),这个看下返回的 deps 就知道了。所以最好不要传 url
额,好吧。尽量不这样用好了。
ps:取巧的方法,把同名不同类型的资源按照目录分隔~~~



pps:主要是GC不定时,不主动调用的话,很难看出来释放的效果。。。。。。
匹配到其他同名资源了
,现在传入了资源对象可以了
我也遇到了一样的情况,用cc.loader.release释放了资源,内存不降;手动调GC的话,内存会降,但是操作次数多了会崩溃,请问这个怎么解?


