SoftReference
、、はWeakReference
、PhantomReference
ガベージコレクションのプロセスをカスタマイズするために使用できます。それらはすべて拡張Reference<T>
されているため、1つのコレクションに混在させることができます。ハードリファレンス(最も一般的なもの)は拡張Reference<T>
されないため、1つのコレクションにハードリファレンスと他のタイプのリファレンスを混在させることはできません。私は正しいのでCustomReference<T> extends Reference<T>
、すべてのタイプのオブジェクトリンクを単一のコレクションに混合するという望ましい結果を達成するためにコレクションに入れる必要があります(Collection<Reference<T>>
)?
更新:SSCCEを作成するときに、通常の方法で拡張することはできないことがわかりましたReference<T>
(コンストラクターはパッケージローカルです)。
したがって、質問は次のように更新されます。単一のコレクションクラスを使用して、常に一部のオブジェクト(たとえば、10)を保持するキャッシュを作成し、メモリが許可されていない場合に他のオブジェクトをGCによって再利用できますか?ハード参照とソフト参照のカスタムラッパーを提供し、それらをコレクションに保存する以外に、これを行う他の手段はありますか?