【发布时间】:2016-11-26 14:39:24
【问题描述】:
假设我有如下代码:
class A {
b: B;
constructor() {
this.b = new B(this);
}
}
class B {
a: A;
constructor(a: A) {
this.a = a;
}
}
let a= new A()
当我想销毁 a 的实例时:
1我应该只是
a=null;
或
a.b.a=null;
a=null;
?
2 有什么方法可以编写代码来测试结果吗?说一些代码来检测内存中某个类的实例号?
【问题讨论】:
-
如果没有引用 a 或 b 它将被垃圾收集器标记为不可访问并一起清理,您无需执行任何操作。
-
@toskv 所以如果只引用a,当我使用
a=null。即使 a 和 b 被循环引用, b 也会自动被 gc 引用? -
是的,只要没有其他人引用它们。
-
您可以在 MDN 页面上了解更多关于 javascript 垃圾收集的信息。请记住,实际实现可能会有所不同。 developer.mozilla.org/en-US/docs/Web/JavaScript/…
标签: typescript memory-leaks circular-reference