2012-05-08 111 views

回答

-1

如果一個對象只有一個弱引用 gc可以從內存中清除它。

軟引用是指一個引用,當它想要清除該對象時也不會阻止gc。但是,如果一個對象由一個軟引用引用,gc會盡可能將對象保留在內存中。

+0

'弱全局引用',而不是java.lang.ref.WeakRef。這是JNI。 – EJP

4

我認爲這回答了你的問題可以在這裏找到: http://java.sun.com/docs/books/jni/html/refs.html

由於其書面:

局部和全局引用有不同的生命週期。本地引用 被自動釋放,而全局和弱全局引用 保持有效,直到它們被程序員釋放爲止。

局部引用和全局引用的區別是:上下文

本地參考僅僅是一個局部變量。一旦你離開它的上下文,就會銷燬底層對象(就像從定義它的本地函數返回一樣)。

與全局引用一樣,弱全局引用在本地方法調用和跨不同線程的 之間保持有效。與全局 引用不同,弱全局引用不會保留底層對象 不被垃圾收集。

弱全局引用和全局引用之間的區別在於,弱引用的對象可以在需要的情況下進行垃圾回收(在缺少內存的情況下)。