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

AWS investiert Milliarden in Cloud-Standort Brandenburg

Fast acht Milliarden Euro fließen in die deutsche Region der AWS European Sovereign Cloud. Das…

1 Stunde ago

Hochsichere Software für Electronic Knee Boards der Bundeswehrpiloten

Im Rahmen der umfassenden Digitalisierung der Bundeswehr ersetzen Electronic Knee Boards die herkömmlichen Handbücher von…

4 Stunden ago

Mai-Patchday: Microsoft schließt zwei aktiv ausgenutzte Zero-Day-Lücken

Sie betreffen Windows 10, 11 und Windows Server. In SharePoint Server steckt zudem eine kritische…

8 Stunden ago

Firefox 126 erschwert Tracking und stopft Sicherheitslöcher

Mozilla verteilt insgesamt 16 Patches für Firefox 125 und älter. Zudem entfernt der Browser nun…

10 Stunden ago

Supercomputer-Ranking: Vier europäische Systeme in den Top Ten

Einziger Neueinsteiger ist das Alps-System in der Schweiz. Die weiteren Top-Ten-Systeme aus Europa stehen in…

24 Stunden ago

Angriffe mit Banking-Malware auf Android-Nutzer nehmen weltweit zu

Im vergangenen Jahr steigt ihre Zahl um 32 Prozent. Die Zahl der betroffenen PC-Nutzer sinkt…

1 Tag ago