【发布时间】:2014-08-29 11:29:35
【问题描述】:
如果我无法避免在我的 Node.js 应用程序中使用“new”关键字,如何有效地标记对象以进行垃圾回收?我创建了一个具有相当高级构造函数的新对象(我的意思是 new myObj() 实际上在该过程的更深处创建了几个 new Something() 对象。
假设我的构造函数如下所示:
function User(name, age) {
this.something = x;
this.greet = function() { return "hello"; };
this.somethingElse = new OtherThing();
return this;
}
然后我在另一个函数中创建一个新的User:
function createUserAndGreet(name, age) {
var user1 = new User(name, age);
user1.greet();
// now I don't need user1 anymore
}
(顺便说一句,我知道这段代码很烂,但我认为它明白了我的意思)
我让他打招呼后,我该如何摆脱他并释放他占用的内存?
所以如果我用user1 = null; 将user1 设置为null,在我处理完他之后,他会永远消失,GC 会来清理他吗?这也会删除创建的new OtherThing() 吗?或者还有什么我需要做的吗?我听说使用new 因内存泄漏而臭名昭著,所以我只想知道是否有办法解决这个问题。
【问题讨论】:
标签: javascript node.js object garbage-collection