将变量设置为' undefined'实际上释放空间?

时间:2018-02-22 10:43:08

标签: javascript node.js

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

将变量设置为undefined是一种保证吗?

var foo = "something";
// do stuff with foo

foo = undefined;
// awake the Garbage Collector interest to him

1 个答案:

答案 0 :(得分:8)

理论上不,它不会被收集。内存中仍然存在对此变量的引用。它包含未定义值的事实无关紧要。

想象一下RAM就像一个巨大的盒子存储器。这些盒子由不同的公司(UPS,FedEX等)共享。每个盒子都有一个地址,每个公司告诉一些中央应用程序"嘿,这个地址的盒子正由我使用#34;。因此,即使您清空或取消定义该盒子,我们仍然会说出UPS与该盒子之间的1:1连接。以同样的方式,您的JS解释器告诉您的操作系统("嘿,xxx的内存位置正由我使用,不要将其分配给任何其他人")。

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

无论如何,你不应该为JS中的垃圾收集烦恼。只要你在正确的地方创建你的变量并且不要淹没全局对象(但即便如此我怀疑你会遇到很多问题)每个变量都会自动被垃圾收集。无法使用。