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

Uku*_*ubu 2 java memory-leaks

我有2个类,他们都持有对另一个的引用.

class A {
    private B b;

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

class B {
    private A a;

    public B() {
        a = new A(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它泄漏了内存,那么我如何能够实现我想要的而不会泄漏?

Sle*_*idi 5

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

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

  • 我不知道这一点,但这是一个非常详细的澄清. (3认同)