这个Java代码是否会泄漏内存?

时间:2016-05-02 15:56:14

标签: java memory-leaks

我有两个课程,他们俩都持有另一个课程。

class A {
    private B b;

    public A(B b) {
        this.b = b;
    }
}

class B {
    private A a;

    public B() {
        a = new A(this);
    }
}

如果它泄漏了内存,那么我怎样才能实现我想要的而不泄漏?

1 个答案:

答案 0 :(得分:5)

Java的GC非常聪明,可以处理循环引用,它从GC根源到对象检查它们是否仍然存在。因此,如果你有一个A类型的对象没有从任何地方引用(即:GC根目录),即使它引用了B,它也有资格进行垃圾收集。

循环链表总是做类似的事情。