amethod
方法。在哪一行/时刻原始由myObject
引用的对象可以进行垃圾回收?
在下面的代码中,假设已经调用了amethod
方法。在哪一行/时刻原始由myObject
引用的对象可以进行垃圾回收?
class Test {
private Object classObject;
public void amethod() {
Object myObject = new Object();
classObject = myObject;
myObject = null;
}
}
如果classObject
或者amethod
有public、protected、default或static的访问修饰符,那么它会影响对象何时可以被垃圾回收吗?如果会,它会如何受到影响?
- 我的第一个想法是,在Test对象可以被垃圾回收时,该对象也可以被垃圾回收。
- 但是反过来看,优化器可能知道classObject从未被读取,这种情况下
classObject = myObject;
会被优化掉,myObject = null;
成为该对象可以被垃圾回收的点。
Test
类的实例,Object classObject
还是Object myObject
? - Luiggi Mendoza