Java における SoftReference と WeakReference の違いを理解する
Java には、さまざまな程度の影響を与える SoftReference と WeakReference という 2 種類の参照が用意されています。
SoftReferences
Ethan Nicholas が「弱参照を理解する」で説明しているように、SoftReference は、強く参照されていないものの、依然として価値のあるオブジェクトを示します。 。ガベージ コレクターは、メモリが十分にある限り、ソフト参照されたオブジェクトを保持します。このため、SoftReferences は、メモリが不足するまで使用頻度の低いオブジェクトを保持できるキャッシュに最適です。
Peter Kessler 氏は、Java 仮想マシン (JVM) において、クライアント JRE とサーバー JRE 間の処理の違いに注目しています。クライアント JRE は小さいメモリ フットプリントを優先し、ヒープの拡張を防ぐために SoftReferences を積極的にクリアします。逆に、サーバー JRE はパフォーマンスを優先し、ヒープ拡張を犠牲にしても SoftReference を保持しようとします。
WeakReferences
SoftReference とは対照的に、WeakReference は、ガベージコレクションが行われるとすぐに破棄されます。これらは、一時的なリソースや簡単に再作成できるオブジェクトなど、オブジェクトの存続が重要ではないシナリオで使用されます。
WeakReferences は、2 つのオブジェクトが相互に強い参照を保持する循環参照を解除するのに便利です。ガベージコレクションを防止します。 1 つのオブジェクトに WeakReference を導入すると、循環性がなくなり、他に強い参照が存在しないときに両方のオブジェクトをガベージ コレクションできるようになります。
主な違い
以上がJava では SoftReference と WeakReference をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。