Ale*_*ass 3 javascript garbage-collection object node.js
如果我无法避免在 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;
}
Run Code Online (Sandbox Code Playgroud)
User
然后我在另一个函数中创建一个新函数:
function createUserAndGreet(name, age) {
var user1 = new User(name, age);
user1.greet();
// now I don't need user1 anymore
}
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,我知道这段代码很糟糕,但我认为它表达了我的观点)
让他打招呼后,我该如何摆脱他,释放他占用的内存呢?
因此,如果我在处理完 user1 之后将其设置为 null user1 = null;
,他会永远消失吗?GC 会来清理他吗?这也会删除new OtherThing()
创建的吗?或者还有什么我需要做的吗?我听说 usingnew
因内存泄漏而臭名昭著,所以我只想知道是否有解决方法。
GC 负责处理所有未引用的内容。您的代码按原样是“GC 兼容”的,因为在调用 后createUserAndGreet()
,所有引用都被销毁。
关于 GC,您唯一需要关心的是直接附加到 Window 对象(全局变量)的内容,这些永远不会被收集。您的两个变量的作用域位于内部createUserAndGreet()
,并且当函数调用结束时该作用域将被销毁。
归档时间: |
|
查看次数: |
2019 次 |
最近记录: |