1

重新创建相同的对象名称时对象文字是否释放内存?当我从对象文字重新创建相同的对象名称时,对内存有什么影响。例如

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

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

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

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

4

1 回答 1

0

我在 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 中,但我确信其他浏览器的行为方式与这样的示例相同。)

于 2017-04-20T07:59:58.073 回答