Heap-Speicher ist in verschiedenen Generationen organisiert.
1. Young Generation: zunächst Meist werden alle neuen Objekte in Young Generation erstellt werden. Diese Generation ist in zwei Bereiche unterteilt, nämlich Eden Raum und Survivor Raum. Survivor Raum ist weiter in zwei Bereiche unterteilt Survivor0 und Survivor1. Alle neuen Objekte werden anfänglich in Eden Space erstellt, und Überlebendenräume werden hauptsächlich verwendet, während kleinere Garbage Collection vorhanden ist.
Vor jeder kleineren Sammlung eines Survivor Raum leer sein (to
) und das verwendet wird, um die Live Objekte aus eden
Raum oder from
Überlebende Raum für kleinere Sammlungen zu halten.
Für das nächste kleinere Sammlung wird es umgekehrt sein, das heißt ehemalige from
wird to
und to
wird form
sein.
2. Tenured oder alte Generation: Objekte, die lives
in der Young Generation seit einiger Zeit (das heißt ein paar kleineren Sammlungen überlebt) an Old Generation verschoben.
3. Permanente Generierung: Dieser Bereich enthält hauptsächlich Metadaten zu Klassen und Methoden. Read more here.
Heap
PSYoungGen total 13888K, used 9807K [0x8a330000, 0x8b140000, 0x914f0000)
eden space 13504K, 69% used [0x8a330000,0x8ac67710,0x8b060000)
from space 384K, 96% used [0x8b0e0000,0x8b13c6e0,0x8b140000)
to space 448K, 0% used [0x8b060000,0x8b060000,0x8b0d0000)
PSOldGen total 115456K, used 57684K [0x514f0000, 0x585b0000, 0x8a330000)
object space 115456K, 49% used [0x514f0000,0x54d451c0,0x585b0000)
PSPermGen total 16384K, used 11253K [0x4d4f0000, 0x4e4f0000, 0x514f0000)
object space 16384K, 68% used [0x4d4f0000,0x4dfed618,0x4e4f0000)
die oben zeigt die Speichernutzung Zusammenfassung der verschiedenen Generationen in Haufen.
Bitte read this Sun white paper für ein klares Verständnis.