在此示例中有多少对象符合垃圾收集器的条件?

时间:2016-06-15 19:05:35

标签: java garbage-collection

在给定点 X ,有多少对象有资格被垃圾收集器释放?

我对静态以及它与垃圾收集器的实际工作方式有些混淆。你能解释一下吗?

public class Star {
    static String nearbyPlanet = new String();
    String nome = new String();

    static void makeStar(String planet) {
        Star s = new Star();
        s.nearbyPlanet = planet;
    }

    public static void main(String[] arg) {
        Star.makeStar("Mars");
        Star.makeStar("Venus"); /* X -- HERE!! -- */
        Star.makeStar("Krypton");
    }
}

1 个答案:

答案 0 :(得分:0)

2个星是可释放的加2个字符串(nome = new String(); s)“mars”和“venus”可能在常量池中,因此它们不会解除分配。

和提到的评论一样,在“mars”之后的nearbyplanet = new String(); - string也是可释放的。

作为提示,您可以使用调试器单步执行代码,然后使用合适的命令行开关或工具(visualgc或其他)来查看代码的作用。