7550


JavaのWeakReferenceとSoftReferenceはどのような違いがあるのですか？またどのような用途で使い分けると良いのですか？  
ドキュメントを読んでみた感じでは、WeakReferenceはガーベッジコレクタが動いた時に必ずクリアされる、SoftReferenceはメモリの状況によってはクリアされることもある(いずれも直接参照している箇所がない場合)ということなのかなと思ったのですが、この認識で正しいのでしょうか？


CC BY-SA 3.0
2015-03-06T10:29:56.470
7548
2015-03-06T11:12:43.263
2015-03-06T10:42:17.050
450
450
question
java
WeakReference, SoftReferenceについて


>
> ドキュメントを読んでみた感じでは、WeakReferenceはガーベッジコレクタが動いた時に必ずクリアされる、SoftReferenceはメモリの状況によってはクリアされることもある(いずれも直接参照している箇所がない場合)ということなのかなと思ったのですが、この認識で正しいのでしょうか？

その認識でOKです。

使い分けとしては、参照先のオブジェクトが不要になった後に再利用される可能性があるなら`SoftReference`、そうでないなら`WeakReference`を使用することになります。

`SoftReference`は、「今は必要ないが、後でまた使うかもしれないからメモリに余裕があるなら取っておいてほしい」というオブジェクトを保持するのに便利です。キャッシュなどに使われる場面が多いと思います。


CC BY-SA 3.0
2015-03-06T11:12:43.263
7550
2015-03-06T11:12:43.263
3639
7548
answer