Entwickler Java mit zwei primären Ziele im Hinterkopf entwickelt. Erstens, eine Programmiersprache ganz nach einem objektorientierten Paradigma gebaut . Zweitens, um die Java-Sprache auf der Java Virtual Machine ( JVM ) Gewährleistung plattformübergreifende Portabilität laufen . Da Java lief auf der JVM und nicht -Schnittstelle direkt mit der Hardware konnte die JVM verwalten viele der Probleme, die in der objektorientierten Programmierung , nämlich Speicherverwaltung. Der Prozess, durch den die JVM Speicher gehandhabt wird als " Garbage Collection ". Um die Sammlung zu verstehen , muss ein Programmierer in die objektorientierte Programmierung, darunter, wie Speicher verwaltet wird verstehen . Object - Oriented Programming
Objektorientierte Programmierung (OOP) stellt einen Paradigmenwechsel in der Programmierung der Programmierer erstellen Daten " Objekte " als Teil ihres Codes . Programmierer verwenden diese Objekte, um komplexe Datentypen , die sowohl einen Zustand enthalten vertreten und weisen bestimmte Verhaltensweisen. So zum Beispiel erzeugt ein Programmierer eine " Kugel " -Klasse für ein Programm, das Arbeiten mit Berechnungen von Kugeln hat . Die Sphere -Klasse enthält möglicherweise Daten für einen Radius ( seinen Zustand ) und eine Funktion, um einen eigenen Bereich zu berechnen ( das Verhalten ) .
Objects and Memory
Sowohl Java als auch C + + sind OOP-Sprachen . Allerdings zeigt der Unterschied zwischen den beiden die Notwendigkeit für die Speicherbereinigung in Java. In C + +, ein Programmierer verhandelt direkt mit dem Betriebssystem . Dies bedeutet, dass , wenn ein Programmierer ein Objekt erstellen möchte , kann sie eines von zwei Dingen tun . Erstens können sie eine " flache " Kopie während der Codierung erstellen. Zweitens, und mehr üblich , kann sie Code schreiben, der Objekte erstellt dynamisch in "deep " Speicher während Codeausführung durch den Einsatz von " Zeiger ".
Zeiger und Speicherlecks
Ein C + + -Programm verwendet Zeiger auf Speicher während Codeausführung zuzuweisen. A " Zeiger " enthält einen Verweis auf eine Speicherstelle . Wenn ein Programmierer Code, der Objekte erstellt werden während der Laufzeit entwickeln muss, verwendet er Zeiger auf Speicher verweisen beiseite zu legen für Objekt-Erstellung . Das Zeiger ist dann das einzige, was das Objekt Referenzen . Sollte das Programm bewegen Sie den Mauszeiger Referenz während der Ausführung , das Objekt " verwies auf " nicht mehr verwendet werden. Es sitzt einfach im Speicher ohne die Möglichkeit , darauf zuzugreifen. Wenn große Mengen von Objekten durch Zeiger erstellt und links im Speicher durch den Verlust der Zeiger Referenz, so wird dies als " Memory Leak " bekannt und kann zu ernsthaften Problemen in einem Programm führen.
Garbage Collection
In C + + , fällt die Verantwortung für die Verwaltung und die Verhinderung Speicher Speicherlecks direkt auf den Programmierer. Die Java-Sprache , im Gegensatz zu C + +, läuft auf der JVM , abstrahiert vom Betriebssystem . Aus diesem Grund kann der Programmierer System Memory Management im Hinblick auf Objekte zu ignorieren. Vielmehr hält die JVM Registerkarten auf vorhandene Objekte und Referenzen , und löscht diejenigen, die nicht mehr in Gebrauch sind . Auf diese Weise fällt die Aufgabe der Verwaltung Speicher auf der JVM , und der Programmierer kann auf verschiedenen Aufgaben arbeiten, während zuversichtlich, dass Speicher-Management Pflege genommen wird.
Garbage Collection und die JVM 1.4.1
Die 1.4.1 -Version der JVM bietet ein Modell für die Garbage Collection . Die JVM verwendet eine Altersklasse Paradigma , während " junge " Objekte und "alten" Objekte im Speicher vorhanden ist . Die JVM können junge Objekte , um alte Objekte auf , wie oft die junge Objekte werden während der Programmausführung kopiert Basis zu fördern. Alte Gegenstände , dann werden als wichtig erachtet und daher nicht zum Löschen markiert. Die JVM 1.4.1 Garbage Collection -System verwendet einen " Zug" Methode der Entnahme /Löschung , indem sie zunehmend kleine Müllabfuhr spielt anstatt größer , langsamer Sammlungen. Außerdem nimmt die JVM 1.4.1 Vorteil Mehrprozesssysteme indem die gleichzeitige Garbage Collection auf mehreren Prozessoren .