这段Java代码是否存在内存泄漏?

27 浏览
0 Comments

这段Java代码是否存在内存泄漏?

这个问题已经有答案了:

Java中的循环引用

我有两个类,它们彼此持有对方的引用。

class A {
    private B b;
    public A(B b) {
        this.b = b;
    }
}
class B {
    private A a;
    public B() {
        a = new A(this);
    }
}

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

admin 更改状态以发布 2023年5月20日
0
0 Comments

Java的垃圾回收器智能到足以处理循环引用,它从GC根开始往下遍历对象,检查它们是否还活着。因此,如果您有一个类型为A的对象没有被任何地方引用(即:GC根),即使它引用B,它也将有资格进行垃圾收集。

循环链表一直在执行类似操作。

0