如何防止Node.js成为垃圾收集(GC)的关键变量

时间:2016-11-02 14:59:22

标签: javascript node.js garbage-collection

在垃圾回收期间,在Node.js中清除变量的属性。但是,我不希望这种情况发生。我已找到它的解决方案,例如将变量保存到数据库或文件。但是,我不喜欢这种方法。我只需要一个保护垃圾收集的关键部分或关键变量。

例如,使用以下代码:

function a() {
  var b; 
}

c = new a(); 

如何保护变量c免受垃圾回收?

经过一段时间后,c.bc将被删除......就我而言,c.b已被删除......

请帮帮我...我知道我的英语很差,但我非常需要你的帮助。

2 个答案:

答案 0 :(得分:1)

有一点需要注意,在你的代码中,b和d不是a上的属性。它们是函数a内部的局部变量,它们没有被使用,因此被清理干净。

如果您将其更改为:

function a() {
  this.b = 1;
  this.d = 2;
}

var c = new a();

console.log(c.b) //1
console.log(c.d) //2

然后你可以引用c.b和c.d,只要你有c的引用,就不应该收集它。如果你把它作为var b,d;你不能从函数之外引用它们。

比较:

function a() {
  var b = 1;
  var d = 2;
}

var c = new a();

console.log(c.b) //undefined
console.log(c.d) //undefined

答案 1 :(得分:0)

我不确定但是。你没有为c指定范围,所以它进入最高范围,因此它被垃圾收集。在当前范围内定义c:

let c;
function doSomething() {
   c = {b: 1, d: 2};
}

doSomething();

希望它有所帮助。