? Java verwendet eine Garbage Collection für Speicher-Management. Während dies geschieht eine außergewöhnliche Belastung von der Entwickler - hat er nicht mehr , um sicherzustellen, Objekte manuell aus dem Speicher entfernt, wenn sie nicht mehr in Gebrauch sind - es kann auch zum Mitnehmen einige Funktionen , die Entwickler anderer Herkunft zu können gewöhnt werden. Während der Abschluss -Funktionalität ist nicht genau das gleiche wie ein C + + destructor , kann davon ausgegangen werden in der Nähe von einem analogen die Programmiersprache Java bereitstellt. Kurzübersicht der Garbage Collection
Garbage Collection ist eine der fortgeschrittenen Themen in Java -Programmierung. Streng genommen , können Java-Entwickler gesamte Karriere ohne sich jemals zu viel über den Garbage Collector wissen und wie es funktioniert gehen . Grundsätzlich wird jedes Objekt in einem Java-Programm erstellt mit der Java-Laufzeitumgebung registriert , zusammen mit einer Anzahl von allen Orten gibt es eine bestehende Referenz auf dieses Objekt . Wenn ein Objekt nicht mehr durch andere Objekte bezeichnet , markiert das System die für die Sammlung, und das nächste Mal der Garbage Collector läuft , löscht das Objekt .
Basic- Memory Management in C + +
anders verhält es sich in anderen Programmiersprachen , wie C + + , zum Beispiel. In C + +, steuert der Entwickler , wenn ein Objekt aus dem Speicher entfernt wird , wie für das System gegenüber. Dies ist bekannt als " deterministische Speicherverwaltung, " und es hat sowohl seine Vor- und Nachteile. Der primäre Habenseite dafür ist, dass der Entwickler weiß genau, wann in dem Code das Objekt gelöscht wird . Allerdings ist es extrem einfach, ein Objekt, das noch im Einsatz an anderer Stelle im Code werden gelöscht .
Destruktoren und finalisieren
In C + + können Entwickler hinzufügen ein Destruktor einer Klasse , ist das eine Methode, die aufgerufen wird, wenn ein Objekt gelöscht wird . Dies ermöglicht es dem Entwickler, Code auszuführen, wenn das Objekt nicht mehr benötigt wird, vielleicht um ihre Kinder zu löschen oder die Ressourcen zu bereinigen . In Java, bietet das System den Abschluss Methode, die Entwickler überschreiben, um eine ähnliche Funktionalität bieten können. Der Hauptunterschied besteht darin , dass der Abschluss -Methode aufgerufen wird , wenn die Laufzeit bestimmt , dass das Objekt keine weiteren Referenzen verfügt und gesammelt werden können.
Gebrauch mit Vorsicht
Während abschließen können bieten eine ähnliche Funktionalität wie C + + ' s destructor , sollte es wirklich mit Vorsicht verwendet werden . Generell , während das Überschreiben der Methode finalisieren kann völlig in Ordnung für die meisten Situationen , sollten Sie nicht auf sie verlassen, dafür Ressourcen werden zu einem bestimmten Zeitpunkt gereinigt . Zum Beispiel, wenn Sie eine Datenbank -Verbindung geöffnet in ein Objekt, das in finalisieren geschlossen ist , können Sie immer noch potenziell zu viele Verbindungen zur Datenbank , und übergeben der Datenbank Grenze bevor der Garbage Collector alle Objekte abgeschlossen hat - auch wenn Sie keine mehr Verweise auf sie überall.