代码
定义一个10w大小的数组,分别使用splice切分和重新赋值操作,使用chrome观察内存分配情况
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>array splice</title>
</head>
<body>
</body>
<script type="text/javascript">
let keys = new Array(100000).fill([1]);
let copy;
setTimeout(function() {
keys.splice(0,50000);
// keys = keys.splice(0,50000);
// copy = keys.splice(0,50000);
}, 3000);
</script>
</html>
splice
内存并未减少
keys重新赋值
原内存回收后,又新分配了内存
使用copy变量接收splice切掉的数组
原数组占用的内存仍不发生改变
待分析。。。
我们知道数组使用splice后,原数组是会变化的,但是占用的内存并未发生变化。
那么splice切掉的数组,又在哪里被引用了呢。
猜想
如果我想从原数组中,通过循环splice切分并保存这些数组的话,如果原数组不定义为null的话那么内存占用的内存不是变成两倍了?
暂未弄明白,先记录并抛砖引玉。