组合对象的垃圾收集

Nik*_*Nik 7 java garbage-collection

我有两节课

Class A
{
    //constructor
}

Class B
{
    private A a;

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

假设我b在我的代码中使用了B [say ] 的对象,在我最终使用它之后,我将其设置为null.我知道B的对象现在可用于垃圾收集.

我知道在将b设置为null后,它将立即有资格进行垃圾回收吗?但是A型的对象怎么样?将B设置为后,它会立即用于垃圾收集null吗?B收集垃圾是否有资格进行垃圾收集

从理论上讲,直到B被垃圾收集,a仍然有参考吗?因此,SUN JVM编译器在设置后会立即检测到这一点b = null;

Cos*_*atu 5

GC非常智能,可以跟踪对象图形中的路径,以检查是否可以访问对某个对象的现有引用.它甚至可以检测周期(例如,在您的情况下,如果b持有参考aa持有参考b.