指定された条件が返された場合にのみオブジェクトをガベージコレクターに送信できる弱参照をJavaで作成することは可能true
ですか?
ID番号をいくつかのデータにマップするキャッシュのようなものがあるとしましょう:
Map<Integer, SomeData> cache = new HashMap<>();
SomeData
void updateTime()
内部変数を現在の時刻に設定するだけの と、過去 10 分間にオブジェクトが使用されたかどうかをチェックする2 つの重要なメソッドがboolean canBeDeleted()
あります (現在の時刻と保存された時刻に 10 分を加えたものを比較するだけです)。この一定時間使用されていない場合、メソッドは戻りtrue
、オブジェクトをキャッシュから削除できます...
ただし、強い参照ではなく弱い参照でキャッシュを作成すると、次のようになります。
Map<Integer, WeakReference<SomeData>> cache = new HashMap<>();
次に、WeakReference
チェックする唯一のものは、おそらくオブジェクトへの強い参照の可能性ですが、それが私の状態もチェックし、canBeDeleted()
それが返された場合は参照を削除しなかったことを望みますfalse
. これを行う方法はありますか?
(その上、メモリ リークがあり、それを解決する方法がわかりません... WeakReference 内のオブジェクトが削除されると、マップには不要なキーと値のペアがまだ含まれています)。
前もって感謝します。