Effektive Speicherverwaltung mit Javas Referenzobjekten

Garbage Collection ist der von Java benutzte Prozess zur Feststellung nicht mehr benötigter Objekte und der anschließenden Wiederfreigabe des durch diese Objekte belegten Speichers. Javas Garbage Collection eliminiert eine Reihe potenzieller mit Speichermanagement verbundener Bugs, die gleichzeitig gravierend und schwer zu debuggen sind. Ein Zugriff auf bereits freigegebene Objekte oder die versäumte Freigabe von nicht mehr benötigten Objekten sind einfach keine Dinge, um die sich Java-Programmierer Sorgen machen müssen.

Der Nachteil ist jedoch, dass die automatische Garbage Collection den Programmierer in seiner Freiheit etwas einschränkt, da man nicht wissen kann, wann der Garbage Collector über ein bestimmtes Objekt verfügt. Außerdem hat man keine Möglichkeit, das Speichermanagement zu steuern. Mit Java 1.2 wurde ein neuer Objekttyp, das Referenzobjekt, eingeführt um einen Ausweg aus diesen Einschränkungen zu bieten. Bevor diese Referenzobjekte besprochen werden, hier ein paar Details über Javas Garbage Collection.

Garbage Collection in Java

In einfachen Worten ausgedrückt ist Garbage Collection die Freisetzung von Speicher, der nicht mehr von einer Anwendung benutzt wird – man kann es auch Abfallbeseitigung nennen. In Java ist der Garbage Collector für diesen Vorgang zuständig. Er betrachtet Objekte als Abfall, wenn sie nicht länger von einer Anwendung genutzt werden.

Wie fällt der Garbage Collector diese Entscheidung? Streng gesagt sind all solche Objekte nicht genutzt, auf die durch einen aktiven Thread weder direkt noch indirekt zugegriffen werden kann. Alle dieser Objekte können vom Garbage Collector aufgesammelt und ihr Speicherplatz zurückgefordert und wieder freigegeben werden.

Wie und wann der Garbage Collector ausgeführt wird, hängt von dessen Implementierung ab. Es gibt eine Reihe akzeptierter Bereinigungsstrategien und die Java-Spezifikation überlässt die Wahl der Strategie jeder einzelnen JVM-Implementierung. Die einzige Garantie ist, dass vor der endgültigen Freigabe des durch ein Objekt belegten Speicherplatzes die finalize-Methode des Objekts aufgerufen werden muss. Diese wird vom Objekt geerbt, es sei denn, eine eigene Methode wird definiert. Hierdurch bleibt dem Objekt die Möglichkeit, etwaige noch erforderliche Säuberungsaktionen vorzunehmen.

Eine formelle und ausführliche Beschreibung der Garbage Collection in Java ist in Abschnitt 12.6 der Java-Spezifikation zu finden.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

14 Stunden ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

16 Stunden ago

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

21 Stunden ago

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

4 Tagen ago

Microsoft steigert Umsatz und Gewinn im dritten Fiskalquartal

Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…

4 Tagen ago

Digitalisierung! Aber wie?

Mehr Digitalisierung wird von den Unternehmen gefordert. Für KMU ist die Umsetzung jedoch nicht trivial,…

4 Tagen ago