sou*_*rar 6 javascript performance garbage-collection
我有一个javascript对象数组,每个对象用'new'创建.如果出现错误,我想清除整个数组,以便它由JS引擎进行GC管理.为此,只需将数组变量设置为'null'或者是否需要拼接数组中的所有元素并在将数组变量设置为'null'之前将它们设置为null?
我问的原因是在Firefox中我显示(console.log)数组,然后将其分配给null并且显示的对象(通常在显示中更新,我假设甚至更晚)在我检查时仍然显示数组的元素它后来,因此我怀疑这些元素是否实际上是免费的.
TIA
要清除数组,只需将长度设置为零:
var arr = [1,2,3,4,5];
console.log(arr);
arr.length=0;
console.log(arr);
Run Code Online (Sandbox Code Playgroud)
结果:
[1, 2, 3, 4, 5]
[]
Run Code Online (Sandbox Code Playgroud)
编辑:刚刚在主题上找到了这个:http://davidwalsh.name/empty-array
看一下注释似乎只是将变量设置为一个新数组是最简单的方法:
arr = [];
Run Code Online (Sandbox Code Playgroud)
根据测试结果,内存GC比将长度设置为0更快.我想这与触发GC的分配有关.
这里有各种方法的有趣性能测试:http://jsperf.com/array-destroy
| 归档时间: |
|
| 查看次数: |
4170 次 |
| 最近记录: |