如何正确释放JavaScript变量的内存?

时间:2015-10-28 04:37:15

标签: javascript arrays variables memory-management

我一直在处理一些客户端数据,总共可能达到100MB。我一直在使用全局变量来存储数据,变量在我的JS文件的顶部声明:

var data = null;

在定义之后,有一些函数将数据加载到此变量,例如:

data = new Object();
data.array = [];
for (var i=0;i<10000;i++){
  data.array[i] = i;
}

然后一些操作会用一些新数据替换data.array。我发现如果我只是在加载新数据之前将null设置为数据,那么浏览器的内存将会非常快速地增长:

data = null;
data = something_new;
data.array = something_new;

所以我在加载新数据之前尝试使用delete

delete data.array;

现在我有一个问题:我是否必须删除data.array中的每个元素,或者我可以使用delete data.array;删除整个数组? 谢谢!

1 个答案:

答案 0 :(得分:4)

JavaScript具有自动内存管理和垃圾回收功能。如果你摆脱了对一段数据的所有引用,那么将回收内存(并且你无法做任何事情)。

delete data.arraydata.array = null大致相同(它也会删除属性本身,而不仅仅是其值)。

所有数组元素循环中的

delete是很多工作。

如果您最终以data = nulldata = newData结束,则不需要这三个。

你能做的最好的事情就是null尽快将所有内容(即在进行newData计算之前)。