Heapspeicher in Java Java-Objekte, die in einem Bereich erstellt wurden, der als Heapspeicher bezeichnet wird. Der Heapspeicher wird beim Start der JVM erstellt. Der Heapspeicher wird beim Ausführen einer Java-Anwendung vergrößert oder verkleinert. Wenn der Heapspeicher voll ist, entfernt der Garbage Collector die nicht verwendeten Objekte, sodass der Garbage Collector Platz für neue Objekte schafft.
Der Heapspeicher ist in zwei Bereiche (oder Generationen) unterteilt, die aufgerufen werden
1. junger Raum. 2. Alter Raum.
1. Im jungen Raum gibt es Eden-Raum für neues Objekt und es gibt zwei Überlebensräume (von und nach). Diese beiden Überlebensräume sind immer gleich groß.
2.Überlebende Räume werden zum Speichern von Überlebensobjekten verwendet. Wenn der junge Raum voll ist, entfernt der Garbage Collector die nicht verwendeten Objekte, indem er eine spezielle junge Sammlung ausführt, in der alle Objekte, die lange genug im jungen Raum gelebt haben, in den verschoben werden alter Raum, wodurch der junge Raum für mehr Objektzuweisung frei wird.
3.Wenn der Eden-Raum voll ist, wird GC ausgeführt. Wenn sich Objekte in diesem Eden-Raum befinden, werden diese in den Survivor-Raum verschoben.
4. Im jungen Raum verwendet GC normalerweise den Kopieralgorithmus, der schnell ist. Jedes Mal, wenn Überlebensobjekte in einen der Überlebensräume kopiert werden.
5.Wenn der Survivor Space voll ist, werden die restlichen Live-Objekte direkt in den Old Space kopiert.
6. Im alten Raum verwendet GC normalerweise den Mark-Compact-Algorithmus, der langsam ist, aber weniger Speicher benötigt.
7.Wenn der alte Raum voll wird, wird dort Müll gesammelt, ein Prozess, der als alte Sammlung bezeichnet wird. Im alten Raum bleiben Objekte mit langer Lebensdauer dort.
8. Außerhalb des Speichers wird kein Platz für neues Objekt vorhanden sein, selbst wenn die GC für den ALTEN oder den Perm-Teil durchgeführt wird.
9.Objekt wird während der Garbage Collection verschoben: eden -> Survivor -> tenured (alter Raum)