在给定点 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");
}
}
答案 0 :(得分:0)
2个星是可释放的加2个字符串(nome = new String(); s)“mars”和“venus”可能在常量池中,因此它们不会解除分配。
和提到的评论一样,在“mars”之后的nearbyplanet = new String(); - string也是可释放的。
作为提示,您可以使用调试器单步执行代码,然后使用合适的命令行开关或工具(visualgc或其他)来查看代码的作用。