我想了解在第1行中创建的对象何时将是垃圾收集...我假设它在第3行但我不认为这是我的答案中的一个选项 - 第4行& 5是答案的一部分
class MyObject{
public void myMethod(){
System.out.println("Mymethod");
}
}
public class Test {
public static void main(String[] args) {
MyObject m = new MyObject(); //line1
m.myMethod();//line2
m = null;//line3
m = new MyObject();//line4
m.myMethod();//line5
}
}
答案 0 :(得分:4)
如果你将引用设置为null并不意味着垃圾收集器会启动并为它清理内存。
当JVM垃圾收集器启动时,只有符合条件/标记的对象才会被垃圾收集。垃圾收集器会检查所有符合垃圾收集条件的对象,即没有从任何地方引用的对象。
JVM使用名为Marking的进程将对象标记为垃圾回收。当GB启动时,它只会删除标记的对象。
答案 1 :(得分:1)
正确答案是,无法说明第1行创建的对象何时会被垃圾回收。所有你可以肯定地说,它变成符合条件的在第3行被垃圾收集。可以在第3行之后被垃圾收集,但我们不能说它将成为。