#Java の 4 種類の参照の違いは何ですか?
Java には、強参照、ソフト参照、弱参照、仮想参照の 4 種類の参照があります。これら 4 つの引用強度は順番に徐々に弱まります。 [推奨される学習: Java コース]
強力なリファレンス
強力なリファレンスは、最も一般的に使用されるリファレンスです。オブジェクトに強い参照がある場合、ガベージ コレクターはそれを再利用しません。メモリ領域が不十分な場合、Java 仮想マシンは、メモリ不足の問題を解決するために強参照を持つオブジェクトを恣意的にリサイクルするのではなく、OutOfMemoryError エラーをスローしてプログラムを異常終了させます。
ソフト参照(SoftReference)
オブジェクトにソフト参照のみがある場合、メモリ空間は十分であり、ガベージ コレクターはそれを再利用しません。メモリ領域が不足している場合、これらのオブジェクトのメモリが再利用されます。ガベージ コレクターがオブジェクトを収集しない限り、オブジェクトはプログラムで使用できます。ソフト参照を使用して、メモリに依存するキャッシュを実装できます。
ソフト参照は、参照キュー (ReferenceQueue) と組み合わせて使用できます。ソフト参照によって参照されるオブジェクトがガベージ コレクターによってリサイクルされる場合、Java 仮想マシンは、関連付けられた参照キューにソフト参照を追加します。それと。 。
弱参照(WeakReference)
弱参照とソフト参照の違いは、弱参照のみを持つオブジェクトのライフサイクルが短いことです。ガベージ コレクター スレッドがその管轄下のメモリ領域をスキャンするプロセス中に、弱い参照のみを持つオブジェクトが見つかると、現在のメモリ領域が十分であるかどうかに関係なく、そのメモリが再利用されます。ただし、ガベージ コレクターは優先度が非常に低いスレッドであるため、弱い参照のみを持つオブジェクトを必ずしもすぐに見つけられるとは限りません。
弱参照は、参照キュー (ReferenceQueue) と組み合わせて使用できます。弱参照によって参照されるオブジェクトがガベージ コレクションされる場合、Java 仮想マシンは、それに関連付けられた参照キューに弱参照を追加します。
仮想リファレンス (ファントムリファレンス)
「ファントムリファレンス」は、名前が示すとおり、名前だけであり、他のリファレンスとは異なり、ファントムリファレンスは寿命を決定しません。オブジェクトのサイクル。オブジェクトがファントム参照のみを保持している場合、そのオブジェクトは参照がないかのようにガベージ コレクターによっていつでも回収される可能性があります。
仮想参照は主に、ガベージ コレクターによってリサイクルされるオブジェクトのアクティビティを追跡するために使用されます。仮想参照、ソフト参照、弱参照の違いの 1 つは、仮想参照は参照キュー (ReferenceQueue) と組み合わせて使用する必要があることです。ガベージ コレクターがオブジェクトをリサイクルする準備をしているときに、オブジェクトにまだ仮想参照があることが判明すると、オブジェクトのメモリをリサイクルする前に、それに関連付けられた参照キューに仮想参照を追加します。
Java は、次の 2 つの主な目的のためにこれら 4 つの参照型を提供します:
プログラマがコードを通じて特定のオブジェクトを決定できるようにします ライフ サイクル;
は、JVM ガベージ コレクションに役立ちます。
以上がJava の 4 種類の参照の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。