我正在为JS编写代码。 当我删除大对象时,我需要知道JS中的内存是如何工作的。
var a = new Object();
a.b = new Object();
a.b.c = new Object();
a.b.c.d = new Object();
a.b = undefined; // Is it delete a.b.c and a.b.c.d or not?
答案 0 :(得分:4)
如果没有指向对象的指针,它将被垃圾收集。
由于唯一指向a.b.c
的指针位于a.b
,因此a.b.c
将被垃圾收集。与a.b.c.d
相同的情况。
答案 1 :(得分:4)
JavaScript自动被垃圾收集;只有当Garbage Collectior决定运行且对象符合条件时,才会回收对象的内存。
删除操作符或使对象无效(a.b = undefined;)与直接释放内存无关(它只通过断开引用间接进行)。有关详细信息,请参阅memory management页面。