我正在与我的应用程序争夺内存问题,并试图让我的头靠近垃圾收集.如果我有以下代码:
public void someMethod() { MyObject myObject = new MyObject(); myObject.doSomething(); //last use of myObject in this scope doAnotherThing(); andEvenMoreThings(); }
所以我的问题是,myObject可以在myObject.doSomething()这个最后一次使用这个对象后还是在完成某个范围之后的someMethod()的情况下可用于垃圾回收?即垃圾回收是否足够聪明才能看到,虽然局部变量仍然在范围内,但是其余的代码不会被使用?
解决方法
“超出范围”
public void someMethod() { MyObject myObject = new MyObject(); myObject.doSomething(); //last use of myObject in this scope myObject = null; //Now available for gc doAnotherThing(); andEvenMoreThings(); }