重新创建相同的对象名称时,对象字面量是否为空闲内存?从对象文字重新创建相同的对象名称时,对内存有什么影响?例如

var objLit = {};
for(var i=0; i<5; i++){
    objLit['room'] = {};
    objLit['room'].name = "A",
    objLit['room'].class = 10
}

console.log(objLit['room']);


输出是当前的,但是由for循环生成的4个预览对象文字呢?我的问题:

is all 4 object auto delete? is all 4 object reference auto delete?

最佳答案

我在Chrome浏览器中尝试过:

var objLit = {};

for(var i = 0; i < 500000000; i++){
    objLit['room'] = {};
    objLit['room'].name = "A",
    objLit['room'].class = 10
}

console.log(objLit['room']);


如果没有释放内存,则您希望该选项卡的内存使用率在循环运行时保持增长。

事实并非如此。如果循环的长度为500000000次,而Chrome的循环为50次,Chrome不会消耗更多的内存。

换句话说,垃圾回收摆脱了先前的值。
(在Chrome浏览器中,但我敢肯定其他浏览器的行为与上述示例相同)。

08-07 09:38