JNI の弱いグローバル参照とは何ですか? グローバル参照とローカル参照との違いは?
2 に答える
あなたの質問への答えはここにあります: http://java.sun.com/docs/books/jni/html/refs.html
書かれているとおり:
ローカル参照とグローバル参照の有効期間は異なります。ローカル参照は自動的に解放されますが、グローバルおよび弱いグローバル参照は、プログラマーが解放するまで有効なままです。
ローカル参照とグローバル参照の違いは次のとおりです。コンテキスト
ローカル参照は単なるローカル変数です。基になるオブジェクトは、そのコンテキストから抜け出すと破棄されます (それを定義したネイティブ関数から戻るなど)。
グローバル参照と同様に、弱いグローバル参照は、ネイティブ メソッド呼び出し間および異なるスレッド間で引き続き有効です。グローバル参照とは異なり、弱いグローバル参照は、基になるオブジェクトがガベージ コレクションされるのを防ぎません。
弱いグローバル参照とグローバル参照の違いは、必要に応じて (メモリ不足の場合)、弱いものによって参照されるオブジェクトをガベージ コレクションできることです。
オブジェクトに弱い参照しかない場合、gc はそれをメモリからクリアできます。
ソフト参照とは、オブジェクトもクリアしたい場合に gc を妨げない参照を意味します。ただし、オブジェクトがソフト参照によって参照されている場合、gc は可能な限りオブジェクトをメモリに保持しようとします。