ホームページ  >  記事  >  Java  >  Java では SoftReference と WeakReference をいつ使用する必要がありますか?

Java では SoftReference と WeakReference をいつ使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 01:51:02327ブラウズ

When Should I Use SoftReferences vs. WeakReferences in Java?

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 を導入すると、循環性がなくなり、他に強い参照が存在しないときに両方のオブジェクトをガベージ コレクションできるようになります。

主な違い

  • SoftReference はまだ価値のあるオブジェクトを示し、WeakReference はすぐに破棄する必要があるオブジェクトを示します。
  • SoftReference は通常、特に -server JVM にメモリが豊富な場合、WeakReference よりも長く保持されます。
  • WeakReferences は循環参照を解除するのに便利ですが、SoftReferences はキャッシュの実装に適しています。

以上がJava では SoftReference と WeakReference をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。