例如,假設我們已經:在Java中,可以在非靜態方法中多次調用局部變量final,導致內存泄漏?
public void doThis() {
final Foo foo = Foo.getInstance();
... initialize foo somehow...
baz(Bar.getInstance(foo)); // adds Bar instance to something
... bar will be popped from some list, used, and disposed of...
}
內存泄漏可發生這種情況?
我只是不明白什麼是最終的局部變量的真正含義。這是否意味着局部變量不能被重新分配,就是這樣?是否聲明它最終把它放在java堆/內存中的某個地方,這樣它就像一個實例變量,但具有不同的/獨特的?特別是因爲內部/嵌套類可以使用最終局部變量,但不是非最終局部變量?
簡答題「否」。上下文中的關鍵字'final'只意味着你*不能再改變引用,比如說寫'foo = new Foo(someArgs);'然而引用本身可以像GC一樣被任何非最終引用收集。 –