1

请看这个例子:

var a = new A();
b = a;

A 是我要删除的对象 b 同时所有指向同一对象的指针!但我也只能访问 b。请给我解决方案,我可以通过仅访问 b 来同时删除 b 和 a!

4

2 回答 2

3

如果你不给全局变量分配临时值,你甚至不应该关心你描述的问题,因为它是由垃圾收集器处理的。原理很简单:一旦一个值丢失所有指向它的指针,它就会被垃圾收集器从内存中清除。

例如,在以下示例中,变量ab仅在函数f执行时存在:

var f = function () {
  var a = new A();
  var b = a;
}

因此,由于在执行结束时f该值new A()会丢失所有指向它的指针,因此它会被 GC 清除。

于 2013-08-21T11:49:53.930 回答
1

通过仅访问 b 来同时“删除” b 和 a 的解决方案!

您不能通过一个命令删除所有现有引用,您需要手动执行(要求每个引用持有者忘记其值)。

您将需要访问所有保存该值的变量,在这里

b = null;
a = null;
// now it can be garbage-collected
于 2013-08-21T11:49:02.957 回答