Das neue Schlüsselwort weist Speicher auf dem Java-Heap zu. Der Heap ist der Hauptspeicherpool, auf den die gesamte Anwendung zugreifen kann. Wenn nicht genügend Speicher für dieses Objekt verfügbar ist, versucht die JVM, mit einer Garbage Collection Speicher vom Heap zurückzugewinnen. Wenn immer noch nicht genügend Speicher verfügbar ist, wird ein OutOfMemoryError ausgelöst und die JVM wird beendet.
Der Heap ist in verschiedene Abschnitte unterteilt, die als Generationen bezeichnet werden. Wenn Objekte mehr Müllsammlungen überleben, werden sie in verschiedene Generationen befördert. Die älteren Generationen werden nicht so oft Müll gesammelt. Da sich diese Objekte bereits als längerlebig erwiesen haben, ist es weniger wahrscheinlich, dass sie als Müll gesammelt werden.
Wenn Objekte zum ersten Mal konstruiert werden, werden sie im Eden Space zugewiesen. Wenn sie eine Müllsammlung überleben, werden sie in den Survivor Space befördert. Sollten sie dort lange genug leben, werden sie der Tenured Generation zugeordnet. Diese Generation ist Müll, der viel seltener gesammelt wird.
Es gibt auch eine vierte Generation, die permanente Generation oder PermGen. Die Objekte, die sich hier befinden, können nicht durch Speicherbereinigung erfasst werden und enthalten normalerweise einen unveränderlichen Status, der für die Ausführung der JVM erforderlich ist, z. B. Klassendefinitionen und den String-Konstantenpool. Beachten Sie, dass der PermGen-Speicherplatz aus Java 8 entfernt werden soll und durch einen neuen Speicherplatz namens Metaspace ersetzt wird, der im nativen Speicher gespeichert wird. Referenz: http://www.programcreek.com/2013/04/jvm-run-time-data-areas/