2012-05-08 22 views

答えて

-1

オブジェクトにはという弱い参照がある場合 gcはメモリからクリアすることができます。

ソフトリファレンスは、オブジェクトをクリアアウトしたいときにgcを防止しないという意味です。しかし、オブジェクトがソフトリファレンスによって参照されている場合、可能であればオブジェクトをメモリに保持してください。

+0

「弱いグローバル参照」ではなく、java.lang.ref.WeakRefです。これはJNIです。 – EJP

4

私はあなたの質問への答えはここで見つけることができると思う: http://java.sun.com/docs/books/jni/html/refs.html

その書かれたよう:

ローカルおよびグローバル参照は、異なる寿命を有します。ローカル参照 は自動的に解放されますが、グローバルおよび弱いグローバル参照 はプログラマによって解放されるまで有効です。

ローカル参照とグローバル参照の違いは:コンテキスト

ローカル参照は単に、ローカル変数です。基礎となるオブジェクトは、コンテキストを終了すると(そのオブジェクトを定義したネイティブ関数から戻るときなど)破棄されます。

グローバル参照と同様に、弱いグローバル参照は、ネイティブメソッド呼び出しと異なるスレッド間で有効です。グローバル の参照とは異なり、弱いグローバル参照は、基礎となるオブジェクト がガベージコレクションされないようにします。

弱いグローバル参照とグローバル参照の違いは、弱いものが参照するオブジェクトが、必要に応じて(メモリが不足している場合)収集される可能性があることです。

関連する問題