在这里,我对垃圾收集有一个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/

10-09 05:11