1

弱い参照を使用すると、GC は次の GC サイクルで参照を収集できますが、ソフト参照は、メモリがいっぱいになるまで参照を保持し、メモリ エラーがスローされる前に、ソフト参照を削除します。これらの参照をどこで使用しますか? キャッシュを実装するのに最適なリファレンスはどれですか? 例:キャッシュにソフト参照を使用すると、メモリがいっぱいになるとクリアされます。しかし、データベースの詳細をいくつかフェッチしてメモリに入れ、その詳細をソフト参照にキャッシュしたとします。メモリからキー値を削除しても、キャッシュにはまだ存在します。これで弱参照を使用する必要がありますか?ケース?決定はどのように行われるべきですか?

4

4 に答える 4

0

独自のキャッシュを実装する場合は、ソフト参照を使用してください。

私はかつて、Weak References のキャッシュを使用して、作成に非常にコストがかかる大きなオブジェクトを格納するレガシー システムを維持していました。スレッドがそのキャッシュからオブジェクトをフェッチしようとするたびに、そのオブジェクトはすでに GC されているため、オブジェクトを何度も再作成する必要がありました。事実上、キャッシュが存在しないようでした。

しかし、データベースの詳細をフェッチしてメモリに入れ、その詳細をソフト参照にキャッシュしたとします。メモリからいくつかのキー値を削除しても、キャッシュに残ります。この場合、弱参照を使用する必要がありますか?どのように決定する必要がありますか?

あなたの質問を理解しているかどうかわかりません。これらの詳細への元の「ハード」参照が GC された場合でも、ソフト参照のキャッシュに残っている可能性があります。アイテムをキャッシュから削除すると、詳細への参照がまったくなくなるため、それを指すために使用された参照の種類に関係なく、次回は GC されます。

WeakReferenceaが役立つ場合はほとんどありません。弱参照を参照してください - それらはどのように役立ちますか? いくつかの例について

于 2015-09-07T17:54:07.650 に答える