Heim >Java >javaLernprogramm >Was ist der Java-Heap?
Für die meisten Anwendungen ist der Java Heap der größte Speicherbereich, der von der Java Virtual Machine verwaltet wird. Der Java-Heap ist ein von allen Threads gemeinsam genutzter Speicherbereich und wird beim Start der virtuellen Maschine erstellt. Der einzige Zweck dieses Speicherbereichs besteht darin, Objektinstanzen zu speichern, und fast alle Objektinstanzen weisen hier Speicher zu. Dies wird in der Java Virtual Machine-Spezifikation wie folgt beschrieben: Alle Objektinstanzen und Arrays müssen dem Paar Speicher zuweisen. Mit der Entwicklung von JIT-Compilern und der allmählichen Reife der Escape-Analysetechnologie, der On-Stack-Zuweisung und der Skalarersatzoptimierungstechnologien wird Dies führt zu einigen subtilen Änderungen und alle auf dem Heap zugewiesenen Objekte werden allmählich weniger „absolut“.
Der Java-Heap ist der Hauptbereich, der vom Garbage Collector verwaltet wird, daher wird er oft als „GC-Heap“ (Garbage Collected Heap) bezeichnet. Aus Sicht des Speicherrecyclings kann der Java-Heap auch in folgende Kategorien unterteilt werden: Neue Generation und alte Generation. Genauer gesagt gibt es Eden-Raum, From Survivor Space, To Survivor Space Space usw. Aus Sicht der Speicherzuweisung kann der Thread-gemeinsam genutzte Java-Heap in mehrere Thread-private Zuweisungspuffer unterteilt werden. Unabhängig davon, wie die Aufteilung erfolgt, hat dies jedoch nichts mit dem Speicherinhalt zu tun. Der Zweck der weiteren Aufteilung besteht darin, den Speicher besser zu recyceln oder Speicher schneller zuzuweisen.
Gemäß der Java Virtual Machine Specification kann sich der Java-Heap in einem physisch diskontinuierlichen Speicherbereich befinden, solange er logisch kontinuierlich ist, genau wie unser Festplattenspeicher. Während der Implementierung kann es entweder eine feste Größe oder eine erweiterbare Größe haben, aber die aktuellen gängigen virtuellen Maschinen werden alle als skalierbar implementiert. Wenn im Heap kein Speicher zum Abschließen der Instanzzuweisung vorhanden ist und der Heap nicht erweitert werden kann, wird eine OutOfMemoryError-Ausnahme ausgelöst.
Zusammenfassung
1. Der Java-Heap ist der größte Teil des Speichers, der von der Java Virtual Machine verwaltet wird.
Der Java-Heap wird von allen Threads gemeinsam genutzt
3. Die Hauptfunktion des Java-Heaps besteht darin, Objektinstanzen zu speichern
4. Der Ava-Heap ist der Hauptbereich, der vom Garbage Collector verwaltet wird
5. Der Collector verwendet grundsätzlich den Generational-Collection-Algorithmus
6. Der Java-Heap kann in die neue Generation und die alte Generation unterteilt werden. Detaillierter kann er auch in den Eden-Bereich und den From Surivor-Bereich unterteilt werden. und To Surivor-Bereich
Empfohlenes Lernen: Java-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist der Java-Heap?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!