【问题标题】:Is this object garbage collected?这个对象被垃圾回收了吗?
【发布时间】:2013-12-02 14:54:46
【问题描述】:

我有 2 个模块:

//a.js
var obj = {};
require ("./b")(obj);
obj = null;
//POINT P

//b.js
module.exports = function (obj){
  obj = null
};

在点 P,obj 会成为垃圾回收的候选对象吗?

编辑:好的,看来 Node.js 只是缓存了模块“元数据”(搜索function NativeModulehere),所以是的,obj 将被垃圾收集。

【问题讨论】:

    标签: javascript node.js garbage-collection


    【解决方案1】:

    是的,第一个模块中的obj 与第二个模块中的obj 完全不同,这只是一个参数。您两次使用名称“obj”这一事实没有任何区别。

    【讨论】:

    • 如果模块 b 没有使 obj 参数为空,则该对象不会被垃圾回收,因为您有 obj 指向它,但在这种情况下 obj 为空。真正的问题是,node.js 是否以某种方式缓存了导出的函数/参数?
    • 模块 b 中的 obj 与模块 a 中的 obj 无关。在模块 b 中,obj 只是一个参数,您可以给它起任何名称,而在该函数的上下文中,obj 只是表示参数,而另一个 obj 是不可见的。
    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多