#. Es gibt zwei Arten von Speicher in Java. Sie werden Stack bzw. Heap genannt.
Der Stapel ist der Programmspeicherplatz, daher werden alle Grundtypen und Objektreferenzen im Stapel gespeichert.
Der Heap ist der Ort, an dem die Java Virtual Machine Objekte speichert. Es handelt sich um einen riesigen Speicher. Wenn Sie ein Objekt erstellen, legt die Java Virtual Machine das Objekt auf dem Heap und die Adresse des erstellten Objekts auf dem Stapel ab.
Daher werden Verweise auf Basistypen und Objekte im Stapel gespeichert; Objekte werden im Heap gespeichert.
#. Garbage-Collection-Mechanismus in Java
Wenn Sie ein neues Objekt erstellen, reserviert Java den erforderlichen Speicher. Wenn Sie mit der Verwendung eines Objekts fertig sind, gewinnt der Garbage Collector von Java den Speicher für Sie zurück.
Die Garbage Collection läuft im Hintergrund in Form von Threads und sucht nach Objekten, die keine nützlichen Referenzen haben. Sobald die Objekte gefunden werden, werden sie zerstört und der Speicher wird zurückgewonnen.
Die Garbage Collection wird zwischen virtuellen Java-Maschinen implementiert. Sie erfolgt in der Regel nach den gleichen Schritten. Zunächst erstellt der Garbage Collector einen Snapshot der laufenden Threads und aller geladenen Klassen.
Anschließend werden alle am Thread beteiligten Objekte als zuletzt verwendet markiert. Wenn alle möglicherweise beteiligten Objekte markiert sind, werden die verbleibenden, nicht markierten Objekte verworfen.
Um der virtuellen Maschine zu helfen, empfiehlt es sich, einige nicht mehr benötigte Objekte proaktiv zu entfernen. Dies kann erreicht werden, indem der Verweis auf Null gesetzt wird.
z.B.:
Text t = new Test();
t.someAction();
//alles erledigt
t = null;