Node.js中的垃圾收集范围 - 变量保持设置多长时间?

时间:2016-04-10 20:41:36

标签: javascript node.js garbage-collection

这个问题总的来说,如果在X时间内不受影响,我的变量是否会被另一个传递或动态变量设置?

我查看了ECMAScript规范,但我仍然对收集垃圾的内容和内容感到困惑。我看了Lifetime of JavaScript variables,答案是

  

“如果标识符可以访问(通过直接指针或闭包),则不应该是Garbage Collected。”

所以我开始做对了吗?

如果变量由另一个传递的值设置,基本上会发生垃圾收集

三元运算符中怎么样?

我在两个不同的功能之间轮流使用ternary operator作为switch,每个月运行3个,它会知道它在3个月之前condition 1执行condition 2或者是condition 1我有垃圾收集的风险,每次都会运行private SortedMap<Move,State> children= null;

1 个答案:

答案 0 :(得分:1)

在之后或之后对变量值进行垃圾收集,因为不再有对变量的引用。

回想一下Javacript中的数组和对象是通过引用传递的,所以如果

var a={}, b=a;

a指向的对象有两个引用:ab

a=null;

使对象只有一个引用b,因此它不是垃圾收集的候选对象。

b=null;

现在该对象没有引用,因此它成为集合的候选对象。

就封闭而言,同样适用于:

b=function(){
  var a={};
  return a;
};

其中b是对a引用的“已结束”对象的引用。

函数完成后,a超出范围,然后不再是对象的引用。

虽然b在范围内,但在

之前不会对对象进行垃圾回收
b=null;

释放要收集的对象。

无参考值时,垃圾回收取决于JavaScript引擎,通常不受您的直接控制。

有很多方法可以触发显式集合,但在大多数情况下很少需要。