如何在Javascript中收集匿名对象垃圾?

时间:2012-05-07 19:33:14

标签: javascript memory-management garbage-collection

如果我创建一个对象而不将其分配给任何东西,Javascript什么时候会垃圾收集这个对象?这是一个例子:

alert(new Date().getTime());

如果没有完成这样的垃圾收集,会导致内存泄漏吗?

for (var i = 0; i < 99999999; i++) {
    console.info(new Date().getTime());
}

4 个答案:

答案 0 :(得分:7)

如果范围内没有人引用匿名对象,则下次GC运行时会收集垃圾。

因此,在Console.info完成运行后,他们正在进行垃圾收集。如果您设置任何范围内变量来引用它们,那么它们就不会。

答案 1 :(得分:4)

垃圾收集的美妙之处在于你知道何时回收内存,你也不应该关心(除非它发生得太频繁)。

在这种情况下,运行时最终应该回收那些Date个实例,但是你所做的一切都不会改变它的速度。此外,这不会导致内存泄漏。

答案 2 :(得分:4)

JavaScript自动运行GC(垃圾收集器)以回收不再使用的字符串,对象,数组和函数所占用的内存。

  

垃圾收集的一个关键特性是垃圾收集器必须   能够确定何时回收内存是安全的。显然,它   绝不能回收仍在使用并应收集的价值   只有不再可达的值;也就是说,不能的价值观   通过任何变量,对象属性或   程序中的数组元素。

参考: Here.

答案 3 :(得分:1)

这是关于JS garbare集合的一个很好的参考:http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript