我有两个课程,他们俩都持有另一个课程。
class A {
private B b;
public A(B b) {
this.b = b;
}
}
class B {
private A a;
public B() {
a = new A(this);
}
}
如果它泄漏了内存,那么我怎样才能实现我想要的而不泄漏?
答案 0 :(得分:5)
Java的GC非常聪明,可以处理循环引用,它从GC根源到对象检查它们是否仍然存在。因此,如果你有一个A
类型的对象没有从任何地方引用(即:GC根目录),即使它引用了B,它也有资格进行垃圾收集。
循环链表总是做类似的事情。