请问如何优秀快捷的单场景释放预制,释放资源?

请问各位技术大佬,单场景,预制与预制之间有资源共用,如何有效快捷的释放动态加载的预制资源,

var name = ‘resources/p’ + delList[i]
var deps = cc.loader.getDependsRecursively(name);
cc.loader.release(deps);// 释放太慢,容易造成内存泄露

如果我单纯的这样释放,内存释放缓慢,而且容易造成内存泄露,加载其他预制,那么之前释放的预制里面共用的资源又会被多次加载在内存。如果我快速加载其他预制,内存会一直增高然后就造成ios崩溃,
// 如果在这个 prefab 中有一些和场景其他部分共享的资源,你不希望它们被释放,可以将这个资源从依赖列表中删除

var deps = cc.loader.getDependsRecursively(‘prefabs/sample’);
var index = deps.indexOf(texture2d._uuid); // texture2d._uuid是哪一块的?如何获取
if (index !== -1)
deps.splice(index, 1);
cc.loader.release(deps);

如果用上诉官方释放,texture2d._uuid是哪一块资源,从哪儿去记录这一块儿?
之前和一位大佬交流过,他的建议是从底层那块加载资源那块儿着手,当加载一个预制的时候,去从底层加载资源那里增加一个资源uuid的记录,然后释放预制的时候,就释放记录的uuid,现在的情况,从底层记录这个uuid实在是有点儿困难。

跪问各位前辈有没有更有效、快捷、优雅的释放方式。

其实在顶层封装一样也是可以的,
按java内存管理的设计思路:
1、所有的缓存对象 cc.loader里面有所有缓存对象
2、不可以移除的缓存对象根节点 当前场景、所有持久化节点,预加载上来的场景、
只需要通过根节点遍历到所有的不能移除的缓存对象,然后就可以得出可以被移除的缓存对象列表,其实重点关注一下图片就可以了。
剩下来的就是你用弄清楚这些Sprite – SpriteAltas – SpriteFrame – Texture之间的关系,然后从头开始删起,
大致思路就是这样。

// 释放一个 prefab 以及所有它依赖的资源
var deps = cc.loader.getDependsRecursively(‘prefabs/sample’);
cc.loader.release(deps);

按照官方的一个释放方式,我相信他底层也是按照这样的思路干的,但是,他所谓的“JavaScript 的垃圾回收是延迟的”,这一块我怎么处理,有没有快速释放内存的办法。

我们游戏在IPHONE 6上面也遇到了这种内存问题,我已经按我说的这种思路实现了在场景切换时的内存释放,下一步是在做到弹框数量达到一定程度时候的自动内存释放。