我一直在处理一些客户端数据,总共可能达到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;
删除整个数组?
谢谢!
答案 0 :(得分:4)
JavaScript具有自动内存管理和垃圾回收功能。如果你摆脱了对一段数据的所有引用,那么将回收内存(并且你无法做任何事情)。
delete data.array
与data.array = null
大致相同(它也会删除属性本身,而不仅仅是其值)。
delete
是很多工作。
如果您最终以data = null
或data = newData
结束,则不需要这三个。
你能做的最好的事情就是null
尽快将所有内容(即在进行newData
计算之前)。