Was ist eine weiche Referenz?
In der Java®-Codiersprache wird ständig auf Objekte, Zeichenfolgen und Variablen verwiesen, auch wenn der Programmierer diese Verweise nicht kennt. Diese Referenzen kommunizieren direkt mit dem Garbage Collector, einer Funktion, die nicht benötigte Informationen sammelt und wegwirft, sodass sie keinen Speicher mehr beanspruchen. Standardmäßig sind alle Referenzen starke Referenzen und werden ohne Codierung festgelegt. Dies bedeutet, dass sie nicht für den Garbage Collector freigegeben werden. Eine weiche Referenz ermöglicht das Wegwerfen der Daten. Es ist die Referenz auf mittlerer Ebene für alle nicht starken Referenzen.
Immer wenn ein Programmierer etwas mit Java® macht, sei es das Erstellen eines Strings oder das Erstellen komplexer Funktionen, wird ein Verweis erstellt. Der Programmierer muss keinen Referenzbefehl schreiben. Die Referenz wird automatisch erstellt und ist standardmäßig eine starke Referenz. Dies bedeutet, dass die Daten aus der Referenz nicht verworfen werden können, da sie mit integralen Objekten verknüpft sind, die für das gesamte Skript benötigt werden.
Einige Daten müssen jedoch weggeworfen werden, da sie sonst viel Speicher beanspruchen. Wenn ein Programmierer beispielsweise ein Skript erstellt, in dem Seriennummern verwendet werden, oder andere temporäre Informationen gesammelt oder erstellt werden, wirkt sich das Festhalten an diesen Informationen nachteilig aus. Das Java®-Programm würde es ablehnen, die Informationen wegzuwerfen, auch wenn sie nicht benötigt werden, und das Skript würde immer mehr Speicher benötigen, um zu funktionieren.
Durch die Angabe einer Zeichenfolge oder eines Abschnitts als weiche Referenz, die in der Codierung platziert werden muss, wird dem Garbage Collector mitgeteilt, dass die Daten freigegeben werden können. Nach dem Loslassen lautet die Zeichenfolge oder der Abschnitt "null". Der Garbage Collector entscheidet je nach Einstellung, wann die Daten gelöscht werden sollen.
Es gibt drei nicht starke Referenzen: weiche Referenz, schwache Referenz und Phantomreferenz. Die schwache Referenz ist die schwächste und ihre Daten werden schnell verworfen. Als nächstes folgen weiche Verweise, die sich am besten für Skripte eignen, bei denen temporäre Daten mehrmals verwendet werden können. Eine Phantomreferenz wird fast automatisch innerhalb einer Sekunde verworfen und sollte sparsam verwendet werden.
Die Zeitdauer, die eine weiche Referenz verbleibt, hängt in der Regel von der Speicherkapazität des Computers ab. Wenn der Speicher voll ist, zerstört der Garbage Collector zuerst alle schwachen Referenzen. Wenn alle schwachen Referenzen verschwunden sind und der Speicher noch Daten bereinigen muss, werden die weichen Referenzen als nächstes verworfen.