Was ist in Java abschließen?

December 7

Was ist in Java abschließen?

Java verwendet eine Garbage-Collection-System für die Speicherverwaltung. Während dies eine außergewöhnliche Last von der Entwickler nimmt--er nicht mehr hat, um sicherzustellen, dass Objekte manuell aus dem Speicher entfernt werden, wenn sie nicht mehr gebraucht--werden kann es auch einige Funktionen nehmen, die Entwickler von anderen Hintergründen gewöhnt werden können. Zwar die Finalize-Funktionalität genau das gleiche wie ein C++-Destruktor nicht, kann es das nähste zu Analogon der Programmiersprache Java bietet betrachtet werden.

Kurzübersicht der Garbagecollection

Garbagecollection ist eines der fortgeschritteneren Themen in der Java-Programmierung. Java-Entwickler können genaugenommen gesamte Karriere gehen, ohne jemals zu wissen viel über den Garbage Collector und wie es funktioniert. Im wesentlichen jedes Objekt in einem Java-Programm erstellt mit der Java-Runtime registriert ist, zusammen mit einer Anzahl von allen Orten gibt es eine vorhandene Referenz auf dieses Objekt. Wenn ein Objekt nicht mehr auf andere Objekte bezeichnet wird, das System markiert es für Sammlung und der nächsten Ausführung der Garbage Collector, es löscht das Objekt.

Grundlegende Speicherverwaltung in C++

Dinge unterscheiden sich in anderen Programmiersprachen wie C++, zum Beispiel. In C++ wird der Entwickler-steuert, wann ein Objekt aus dem Speicher, im Gegensatz zu dem System entfernt. Dies wird als "deterministische Memory Management" bezeichnet, und es hat seine vor- und Nachteile. Die primäre plus Seite dazu ist, dass der Entwickler genau weiß wann im Code das Objekt wird gelöscht. Allerdings ist es extrem einfach, ein Objekt zu löschen, die noch an anderer Stelle in den Code im Einsatz sein können.

Destruktoren und Fertigstellen

In C++ können Entwickler einen Destruktor einer Klasse hinzufügen, die 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 seine Kinder zu löschen oder Ressourcen zu bereinigen. In Java bietet das System die Finalize-Methode, die Entwickler überschrieben werden können, um ähnliche Funktionalität bieten. Der Hauptunterschied ist, dass die Finalize-Methode aufgerufen wird, wenn die Laufzeit bestimmt, dass das Objekt und keine weiteren Verweise hat kann gesammelt werden.

Verwendung mit Vorsicht

Obwohl Finalize C++ der Destruktor ähnliche Funktionalität bereitstellen kann, sollte es wirklich mit Vorsicht verwendet werden. Allgemein gesprochen, während die Finalize-Methode für die meisten Situationen völlig in Ordnung sein kann, Sie sollte nicht verlassen zu werden es dafür Ressourcen zu einem bestimmten Zeitpunkt bereinigt. Beispielsweise haben Sie eine Datenbankverbindung in einem Objekt öffnen, die geschlossen wird, in abschließen, können noch potenziell zu viele Verbindungen zur Datenbank erstellt und der Datenbankeinschränkung Vergehen, bis der Garbage Collector alle Objekte--abgeschlossen hat, auch wenn Sie nicht mehr überall Verweise auf diese haben.