Die Referenz-Warteschlange bietet sowohl blockierende als auch blockierungsfreie Methoden zum Entfernen von schwachen Referenzen aus der Warteschlange. Mehrere Strategien können angewendet werden, so z.B. das Abrufen der Warteschlange an wichtigen Stellen des Programms oder die Nutzung eines dedizierten Threads, um die Warteschlange zu durchlaufen und alle erforderlichen Bereinigungen durchzuführen.
Wie man sehen kann, wird zum Zeitpunkt seiner Erstellung jedes MyReference-Objekt bei einer Referenz-Warteschlange registriert. Und während MemoryBlocks vom Garbage Collector aufgesammelt werden, reihen sich deren entsprechenden Referenzobjekte in die Referenz-Warteschlange ein. Vor dem Ausdruck der ArrayList wurde die Warteschlange nach zu entfernenden null-Referenzen durchgesehen.
Listing A enthält die bekannte „Speicherverbrauchsklasse“ MemoryBlock während Listing B eine Beispiel-Anwendung darstellt, die über Referenzobjekte gehaltene MemoryBlocks in zunehmendem Maß verbraucht, so dass deren Speicherplatz bei Bedarf freigegeben werden kann. Die Beispiel-Anwendung bedient sich einer benutzerdefinierten Referenzklasse, MyReference, die von SoftReference abgeleitet wurde und in Listing C ersichtlich ist.
Abbildung A zeigt die Ausgabe dieses Beispiels. Man beachte, dass das Array nur die Referenzobjekte enthält, die auf gültige MemoryBlocks verweisen. Die vom Garbage Collector zurückgeforderten wurden entfernt.
Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…
Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.
Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…
Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…
Mehr Digitalisierung wird von den Unternehmen gefordert. Für KMU ist die Umsetzung jedoch nicht trivial,…
Der Nettoprofi wächst um 117 Prozent. Auch beim Umsatz erzielt die Facebook-Mutter ein deutliches Plus.…