Loader.load加载json类型的资源,完成后调用Loader.clearRes后,并不能真正释放资源的bug

demo:
class NewTest
{
public static url: string = "333.json";
private loadedMap;
constructor()
{
this.loadedMap = Laya.Loader["loadedMap"]; 
Laya.init(720, 1280, Laya.WebGL);
Laya.Stat.show(0,0);
Laya.stage.alignH = "center";
Laya.stage.alignV = "middle";
Laya.stage.scaleMode = "fixedwidth";
console.log("iswebgl:", Laya.Render.isWebGL);

public Load()
{
Laya.loader.load(NewTest.url, null, null, null, 0, true);

public Unload()
{
Laya.loader.clearRes(NewTest.url);
}

window["test"] = new NewTest();
window["test"].Load();
Laya.timer.once(10*1000, null, window["test"].UnLoad);如题所示,我用demo测试,加载一个json文件,然后延迟10秒钟调用释放资源,在Laya.Loader["loadedMap"]查看,确实已经去掉了。
但是内存并没有降下来,我尝试在chrome的内存调试那里执行垃圾回收,还是回收不掉。最后查看snapshoot,发现loader._http引用着加载结果导致释放不了。
 
补充:
HttpRequest 定义了一个_data保存结果,是不是没必要的?回调完成后可以清空
loader资源不能释放的问题.jpg.jpg
已邀请:

yung

赞同来自: 闪小达

下次再加载别的东西的时候就会释放掉了
loader是全局复用的

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作