将变量设置为"未定义"是否真的会释放空间?



我正在寻找一种明确的方法,以确保JavaScript垃圾收集器很快就会完成工作。

那么,将变量设置为undefined是保证吗?

var foo = "something";
// do stuff with foo
foo = undefined;
// awake the Garbage Collector interest to him

在理论上,不会收集它。记忆中仍然有一个引用该变量。它包含不确定的值的事实是无关紧要的。

想象一下RAM就像巨大的盒子。这些盒子在不同的公司(UPS,联邦快递等(之间共享。每个盒子都有一个地址,每个公司都告诉一些中央应用程序"嘿,我正在使用此地址的框"。因此,即使您将盒子排空或不确定,也可以说UPS和该盒子之间仍然有1:1的连接。JS解释器以同样的方式告诉您的操作系统("嘿,我正在使用XXX的内存位置,不要将其分配给其他任何人"(。

它包含一个未定义值的事实并不能释放此内存位置。您的操作系统不知道或不关心该内存位置的内容,他知道它已分配给您的JS解释器,而您的JS解释器将其链接到您的变量 foo 。。

无论如何,您都不应该在JS中使用垃圾收集。只要您在正确的位置创建变量并且不要淹没全球对象(但即使那样,我怀疑您会遇到很多问题(,每个变量都会自动收集垃圾