Heim >Java >javaLernprogramm >Warum wurde PermGen in JDK 8 eliminiert?

Warum wurde PermGen in JDK 8 eliminiert?

Susan Sarandon
Susan SarandonOriginal
2024-11-14 22:35:02684Durchsuche

Why Was PermGen Eliminated in JDK 8?

PermGen-Eliminierung in JDK 8: Die Gründe verstehen

Im Java Development Kit (JDK) 8 ist das Konzept von PermGen (Permanent Generation) wurde entfernt. Beim Ausführen von Eclipse in dieser Version erhalten Benutzer möglicherweise eine Warnmeldung, die darauf hinweist, dass die Option MaxPermSize ignoriert wird. Diese Entfernung wurde durch mehrere mit PermGen verbundene Nachteile verursacht, darunter:

  • Feste Größe beim Start, was eine dynamische Anpassung erschwert.
  • Interne Hotspot-Typen als Java-Objekte, was zu Komplexität führt und Ineffizienzen.
  • Bedarf an speziellen Iteratoren und Metadaten während des vollständigen Mülls Sammlungen.
  • Einschränkungen bei der Freigabe von Klassendaten gleichzeitig und außerhalb von GC-Pausen.
  • Hindernis für zukünftige Optimierungen, die von der Entfernung von PermGen abhingen.

Um diese Probleme zu beheben, wurde die Das Metaspace-Konzept wurde eingeführt, um PermGen zu ersetzen. Metaspace bietet die folgenden Vorteile:

  • Entspricht der Eigenschaft der Java-Sprachspezifikation, Klassenlebensdauern an Klassenlader anzupassen.
  • Verwendet eine lineare Zuordnung und eliminiert eine individuelle Rückgewinnung, außer in bestimmten Szenarien.
  • Reduziert den Aufwand für die Speicherbereinigung und verbessert Leistung.

Metaspace kann mithilfe der Flags -XX:MaxMetaspaceSize und -XX:MetaspaceSize optimiert werden, sodass Administratoren die Anfangsgröße und die maximale Grenze definieren können. Standardmäßig hat Metaspace eine unbegrenzte Größe, sodass es sich zur Laufzeit dynamisch an die Anwendungsanforderungen anpassen kann.

Die Entfernung von PermGen und die Einführung von Metaspace haben andere Optimierungen und Funktionen in JDK 8 und höher ermöglicht, wie z Datenaustausch in Anwendungsklassen, Erweiterungen junger Sammlungen und Reduzierungen der Metadatengröße, was letztendlich zu einer verbesserten GC-Leistung und Gesamteffizienz führt.

Das obige ist der detaillierte Inhalt vonWarum wurde PermGen in JDK 8 eliminiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn