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