ソフトリファレンスとは
Java®コーディング言語では、プログラマーがそれらの参照を知らなくても、オブジェクト、ストリング、および変数への参照が常に行われます。 これらの参照はガベージコレクターと直接通信します。ガベージコレクターは、不要な情報を収集して破棄し、メモリを消費しない機能です。 デフォルトでは、すべての参照は強力な参照であり、コーディングなしで設定されます。つまり、ガベージコレクターにリリースされません。 ソフト参照により、データを破棄できます。 これは、すべての非強参照の中間レベルの参照です。
プログラマーがJava®で何かをするときはいつでも、ストリングの作成や複雑な関数の作成と同じくらい簡単に、参照が行われます。 プログラマは参照コマンドを書く必要はありません。 参照は自動的に作成され、デフォルトでは強力な参照です。 これは、スクリプト全体に必要な統合オブジェクトにリンクされているため、参照からのデータを破棄できないことを意味します。
ただし、一部のデータは、多くのメモリを占有するため、破棄する必要があります。 たとえば、プログラマがシリアル番号を使用するスクリプトを作成したり、その他の一時的な情報を収集または作成したりすると、この情報を保持することは有害になります。 Java®プログラムは、情報が不要な場合でもその情報を破棄することを拒否し、スクリプトは機能するためにより多くのメモリを必要とします。
文字列またはセクションをソフト参照として指定することで、コーディングに配置する必要があり、データを解放できることをガベージコレクターに伝えます。 解放されると、文字列またはセクションは「null」として読み取られます。 ガベージコレクタは、その設定に応じて、データをいつ破棄するかを決定します。
非強参照には、ソフト参照、弱参照、ファントム参照の3つがあります。 弱参照は最も弱く、そのデータはすぐに破棄されます。 一時データが複数回使用される可能性のあるスクリプトに最適なソフト参照は、次に並んでいます。 ファントム参照は、1秒以内にほぼ自動的に破棄されるため、慎重に使用する必要があります。
通常、ソフトリファレンスが残る時間の長さは、コンピューターのメモリ量によって異なります。 メモリがいっぱいの場合、ガベージコレクターは最初にすべての弱い参照を破棄します。 すべての弱参照がなくなって、メモリがまだデータを削除する必要がある場合、ソフト参照は次に破棄されます。