我的对象是否被覆盖和处理

时间:2014-04-30 14:51:05

标签: javascript memory-leaks

使用Javascript。

我声明了一个像这样的图像变量:

var myIMG = new Image();

我加载了100张这样的图片:

for (var test =0 ; test < 100; test++)
{
     myIMG.src = null;
     myIMG.src = {get new image from server somehow}
}

和此:

for (var test =0 ; test < 100; test++)
{
     myIMG = new Image();
     myIMG.src = {get new image from server somehow}
     myIMG.src = null;
     delete myIMG
}

(代码用于测试目的)

减少内存消耗的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:1)

您可能有兴趣知道JavaScript没有for循环的本地范围。它的范围是基于功能。因此,您不应在函数中多次重新声明var myImg

回到你的代码,我建议你只声明一个new Image()(即在循环之外),这应该更有效

var i, myImg = new Image();

for(i = 0; i < 100; i++) {
    myImg.src = getNewSource();
}

delete属性用于从对象中删除项目。例如:

var myObj = { a: 2, b: 3 };
delete myObj.a;
// myObj will now be { b: 3 }

但是,这不需要释放内存,而是引用对象中的项目。内存由JavaScript垃圾收集器声明(并且您无法在代码中触发)

希望这有帮助