【问题标题】:Garbage Collecting array of objects in a function垃圾收集函数中的对象数组
【发布时间】:2016-11-03 13:49:42
【问题描述】:

假设我有以下功能:

function myfunc() {
    var data = [];

    for (var i=0; i<10; i++) {
        data[i] = {foo:"bar"};
    }

    // do something with data
}

在函数结束时,我不再需要任何数据。要释放它需要什么?

据我所知,如果无法从全局对象中访问某些内容,则会对其进行 GC。如果data 无法访问,那么内部的所有元素也将无法访问,因为data 是对它们的唯一引用。那么,让data 和其中的所有内容成为 GCable 的正确方法是什么?

如果我把 data = null 放在函数的末尾,它会起作用吗?

我什至需要做点什么吗?既然datamyfunc()中的一个局部变量,是不是应该在函数完成后销毁,从而使data中的数据GCable?

【问题讨论】:

    标签: javascript garbage-collection garbage


    【解决方案1】:

    是的,你不需要做任何事情。

    如果没有其他对刚刚超出范围的对象的引用,它们将被垃圾回收。

    这些其他引用可能来自意想不到的地方(例如在函数调用中幸存下来的意外关闭,或者将东西附加到浏览器 DOM),但通常该机制非常可靠地工作。它还负责参考周期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 2013-01-25
      相关资源
      最近更新 更多