Java:垃圾收集的资格

时间:2014-09-14 18:44:21

标签: java

如果之前有人问我,我道歉。

我有以下情况:

public class Distress{
    private static Distress distressIns;

    private MyFirstClass aClass;
    private MySecondClass bClass;

    private Distress(){
       aClass = new MyFirstClass();
       bClass = new MySecondClass();
    }

    ///update: this is a singleton class
    public static getIns(){
        if (distressIns == null){
            distressIns = new Distress();        
         }
        return distressIns;
    }

    public static destroyIns(){
        distressIns = null;
    }
}

在上述情况下,如果有人拨打destroyIns()aClassbClass也会成为null吗?

1 个答案:

答案 0 :(得分:4)

没有。首先,有人可能会继续引用distressIns(您的getIns()方法毕竟是公开的,因此可能会有另一个引用)。

其次,变量不会变为空白"只是因为他们是垃圾收集。这些对象可能会也可能不会被垃圾收集,这取决于是否存在其他引用。