我正在與我的應用程序的內存問題作鬥爭,並試圖讓我的頭圍繞垃圾收集。如果我有下面的代碼:究竟是什麼時候可用於垃圾收集的對象?
public void someMethod() {
MyObject myObject = new MyObject();
myObject.doSomething(); //last use of myObject in this scope
doAnotherThing();
andEvenMoreThings();
}
所以我的問題是,將myObject
可用於垃圾收集myObject.doSomething()
這是一次使用這種對象,或someMethod()
完成後後,它散發出來的範圍是什麼?即是否足夠聰明地看到垃圾收集,儘管局部變量仍在範圍之內,其餘代碼將不會使用它?
我想你在錯誤的上下文中使用'dereferenced'。 – isah
僅僅因爲垃圾收集器認爲它沒有被使用並不代表它會馬上選擇釋放它 - 你不應該編寫依賴於不可預知事件行爲的代碼;)如果你有內存問題那麼你可能會錯誤地引用一些東西:( – deanWombourne
嗯,謝謝isah,我認爲你是對的,我會更新標題的問題 –