Den Unterschied zwischen SoftReferences und WeakReferences in Java verstehen
Java bietet zwei Arten von Referenzen, SoftReferences und WeakReferences, die unterschiedliche Einflussgrade bieten auf die Lebensdauer eines Objekts im Speicher.
SoftReferences
Wie Ethan Nicholas in Understanding Weak References erklärt, weist eine SoftReference auf ein Objekt hin, das zwar nicht stark referenziert, aber dennoch wertvoll ist . Der Garbage Collector behält weich referenzierte Objekte bei, solange genügend Speicher vorhanden ist. Dies macht SoftReferences ideal für Caches, in denen selten verwendete Objekte beibehalten werden können, bis der Speicher knapp wird.
In der Java Virtual Machine (JVM) stellt Peter Kessler einen Unterschied in der Handhabung zwischen Client- und Server-JREs fest. Die Client-JRE priorisiert einen geringen Speicherbedarf und löscht SoftReferences eifrig, um eine Heap-Erweiterung zu verhindern. Umgekehrt priorisiert die Server-JRE die Leistung und versucht, SoftReferences auch auf Kosten der Heap-Erweiterung beizubehalten.
WeakReferences
Im Gegensatz zu SoftReferences bezeichnen WeakReferences Objekte, die es sein sollten sofort nach der Müllabfuhr entsorgt. Sie werden in Szenarien verwendet, in denen das Fortbestehen eines Objekts nicht entscheidend ist, beispielsweise bei temporären Ressourcen oder Objekten, die leicht neu erstellt werden können.
WeakReferences eignen sich zum Aufbrechen von Zirkelverweisen, wenn zwei Objekte starke Verweise aufeinander haben. Verhinderung der Müllabfuhr. Durch die Einführung einer WeakReference für ein Objekt wird die Zirkularität durchbrochen, sodass beide Objekte durch Garbage Collection erfasst werden können, wenn keine anderen starken Referenzen vorhanden sind.
Hauptunterschiede
Das obige ist der detaillierte Inhalt vonWann sollte ich SoftReferences vs. WeakReferences in Java verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!