当没有对象的引用时,对象可以被垃圾收集,或者引用它的每个对象也被垃圾收集.
public int getThing() {
Object o = new Object();
return 5;
}
Run Code Online (Sandbox Code Playgroud)
在这里,o可以在方法之后进行垃圾收集,因为没有任何指向它的方法.
Object o = null;
public int getThing() {
o = new Object();
return 5;
}
Run Code Online (Sandbox Code Playgroud)
在这里它不能,因为其他东西仍然可以引用o,因为它是一个类成员.
public Object getThing() {
Object o = new Object();
return o;
}
Run Code Online (Sandbox Code Playgroud)
这里不可能,因为它被退回了.如果呼叫者持有它,它会保持活着状态.
如果有人指向它,它会保持活着(粗略).