我正在与我的应用程序的内存不足问题作斗争,并试图解决垃圾收集问题。如果我有以下代码:
public void someMethod() {
MyObject myObject = new MyObject();
myObject.doSomething(); //last use of myObject in this scope
doAnotherThing();
andEvenMoreThings();
}
所以我的问题是,在 myObject.doSomething()
这是最后一次使用这个对象之后,或者在 myObject.doSomething()
之后,或者在完成 someMethod()
它在哪里超出范围? IE。垃圾收集是否足够聪明,可以看到虽然局部变量仍在范围内,但其余代码不会使用它?
最佳答案
“超出范围的地方”
public void someMethod() {
MyObject myObject = new MyObject();
myObject.doSomething(); //last use of myObject in this scope
myObject = null; //Now available for gc
doAnotherThing();
andEvenMoreThings();
}
关于java - 对象究竟在什么时候可用于垃圾回收?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8940944/