javascript - javascript中如何释放闭包的内存?

标签 javascript memory

关闭:

function test() {
  var count = 0;

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

众所周知,count在调用test()后不会释放,现在如果闭包对我来说没有用,我怎么释放内存的?

最佳答案

JavaScript 中的所有对象都会被垃圾回收,无论它们是否参与闭包。在上面的代码中,如果您这样做:

var x = test();

那么当然不能释放count的内存,因为它可能会被x使用。但是,如果您这样做:

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

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

此外,如果您这样做:

function foo () {
    var x = test();
    x();
}

foo();

count 的内存也会被垃圾回收,因为当 foo() 结束时 x 超出范围。

确保 JavaScript 中不存在内存泄漏的最佳方法是避免使用全局变量。

Note: The garbage collector in old versions of IE used a simple reference count which means that circular data structures are not garbage collected. This was fixed in either IE6 or IE7 and was never a problem in other javascript engines which normally use a mark-and-sweep garbage collector

关于javascript - javascript中如何释放闭包的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39586546/

相关文章:

sql-server - SQL Server 进程内存的很大一部分已被调出

linux - 来自用户空间的连续物理内存

javascript - 表单输入作为url参数并在网页上输出新的url

javascript - 以树形结构显示数据

javascript - v8 何时会实现 ECMAScript 5?

javascript - knockout .js : Binding to a function on the click-event using the Repository-Pattern

memory - PhantomPinned 成员会使我的结构具有固定的内存地址吗?

javascript - 使用 JavaScript 获取 CSS 属性的值

c++ - C++ 的 ORG 替代方案

安装的 Android 应用程序是 apk 大小的两倍