请看这个例子:
var a = new A();
b = a;
A 是我要删除的对象 b 同时所有指向同一对象的指针!但我也只能访问 b。请给我解决方案,我可以通过仅访问 b 来同时删除 b 和 a!
请看这个例子:
var a = new A();
b = a;
A 是我要删除的对象 b 同时所有指向同一对象的指针!但我也只能访问 b。请给我解决方案,我可以通过仅访问 b 来同时删除 b 和 a!
如果你不给全局变量分配临时值,你甚至不应该关心你描述的问题,因为它是由垃圾收集器处理的。原理很简单:一旦一个值丢失所有指向它的指针,它就会被垃圾收集器从内存中清除。
例如,在以下示例中,变量a
和b
仅在函数f
执行时存在:
var f = function () {
var a = new A();
var b = a;
}
因此,由于在执行结束时f
该值new A()
会丢失所有指向它的指针,因此它会被 GC 清除。
通过仅访问 b 来同时“删除” b 和 a 的解决方案!
您不能通过一个命令删除所有现有引用,您需要手动执行(要求每个引用持有者忘记其值)。
您将需要访问所有保存该值的变量,在这里
b = null;
a = null;
// now it can be garbage-collected