在这里,我对垃圾收集有一个Java疑问:
protected class Robocop {
Integer weight = 200;
Robocop attent(Robocop rb) {
rb = null;
return rb;
}
public static void main(String[] args) {
System.out.println("indeed the solution is behind the corner);
Robocop rb1 = new Robocop();
Robocop rb2 = new Robocop();
Robocop rb3 = rb1.attent(rb2);
rb1 = null;
}
}
您认为有多少个对象可以使用GC?
我对此的看法是,将4个对象作为垃圾回收rb3,rb1和相关的Integer包装实例变量。
最佳答案
在您的方法内部,您最好只返回null
,因为您获得了引用的副本作为方法的参数,而不是原始引用本身。因此,您不能在方法内部修改原始引用。您只能修改此引用所引用的对象。
在main的末尾,有2个对象可以使用GC:一个Robocop
(内部有一个Integer
)。
在main完成之后,JVM将会关闭(就您而言),并且不会发生GC。
关于java - 垃圾收集工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14710880/