如何在javascript中释放封闭内存?

时间:2016-09-20 05:46:20

标签: javascript memory

关闭:

function test() {
  var count = 0;

  return function() {
    count++;
  };
}

众所周知,counttest()被调用后不会被释放,现在如果关闭对我来说没用,我怎么能释放它的记忆呢?

2 个答案:

答案 0 :(得分:3)

javascript中的所有对象都是垃圾收集的,无论他们是否参与关闭或不关闭。在上面的代码中,如果你这样做:

var x = test();

然后当然count的内存无法释放,因为x稍后可能会使用它。但是如果你这样做:

var x = test();
x = "";

count的内存迟早会被垃圾收集。

答案 1 :(得分:0)

闭包是JavaScript中内存泄漏的重要来源。

   function foo() {
    var count = 0;
    function do() {
     return count++;
    }
    return {
     do: do}
   } 

这里foo()返回do函数表达式,do()对count变量进行闭包。我们不知道什么时候会调用返回的do()表达式。所以垃圾收集器无法理解何时释放内存。所以我们需要在使用后手动释放它。