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

SmokeBuster bekämpft SmokeLoader

Malware SmokeLoader wird weiterhin von Bedrohungsakteuren genutzt, um Payloads über neue C2-Infrastrukturen zu verbreiten.

7 Stunden ago

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

23 Stunden ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

1 Tag ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

1 Tag ago

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

1 Tag ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

1 Tag ago