PermGen-Entfernung in JDK 8: Warum VM-Option ignoriert wird
Einführung
JDK 8 gebracht Wesentliche Änderungen an der Architektur der Java Virtual Machine (JVM), einschließlich der Abschaffung der Permanent Generation (PermGen). Diese Änderung hat Auswirkungen darauf, wie Eclipse und andere Anwendungen mit der JVM interagieren.
Problem
Beim Ausführen von Eclipse in JDK 8 wird Benutzern möglicherweise eine Warnmeldung angezeigt, die darauf hinweist, dass die MaxPermSize Die VM-Option wird ignoriert. Diese Nachricht wirft Fragen zu den Gründen für das Verwerfen dieses Parameters auf.
Gründe für das Ignorieren von MaxPermSize
Die Gründe für das Ignorieren der VM-Option MaxPermSize sind auf mehrere Nachteile zurückzuführen, die mit PermGen in verbunden sind frühere JDK-Versionen:
-
Feste Größe: PermGen hatte beim Start eine feste Größe, was es schwierig machte, die Speicherzuweisung für Anwendungen mit dynamischen Klassenladeanforderungen zu optimieren.
-
Interne Hotspot-Typen: In PermGen gespeicherte Objekte waren Java-Objekte, die aufgrund ihrer Persistenz über Garbage Collections hinweg zu potenziellen Speicherverlusten führten.
-
Vereinfachte Sammlungen: Entfernen von PermGen zulässig zur Vereinfachung vollständiger Speicherbereinigungszyklen, wodurch die Notwendigkeit spezieller Iteratoren für Metadaten entfällt.
-
Gleichzeitige Freigabe von Klassendaten: MetaSpace ermöglicht die gleichzeitige Freigabe von Klassendaten außerhalb von GC-Pausen und verbessert so die Leistung .
-
Zukünftige Verbesserungen: Die Eliminierung von PermGen ebnet den Weg für zukünftige JVM-Verbesserungen und -Optimierungen, die zuvor durch seine Einschränkungen begrenzt waren.
Metaspace: Der Ersatz
In JDK 8 wurde PermGen durch Metaspace ersetzt, was mehrere Vorteile bietet:
-
Klassenlader-Affinität: Metaspace ist verbunden mit spezifische Klassenlader, um sicherzustellen, dass die Klassenlebensdauer mit dem Lebenszyklus des entsprechenden Laders übereinstimmt.
-
Lineare Zuordnung: Metaspace verwendet lineare Zuordnung, was die Speicherverwaltung vereinfacht.
-
Nein Individuelle Wiederherstellung: Metaspace führt keine individuelle Wiederherstellung durch, außer bei Klassenneudefinitionen und Ladefehlern, wodurch der Overhead weiter reduziert wird.
-
Kein GC-Scan oder Komprimierung: Metaspace-Objekte werden nicht gescannt oder komprimiert während Garbage-Collection-Zyklen, wodurch die Leistung verbessert wird.
-
Optimierte Optimierung: Metaspace kann mithilfe der Flags -XX:MaxMetaspaceSize und -XX:MetaspaceSize optimiert werden, was eine flexiblere Speicherverwaltung ermöglicht.
Fazit
Die Entfernung von PermGen in JDK 8 bringt erhebliche Leistungs- und Stabilitätsvorteile für Java-Anwendungen. Während die MaxPermSize VM-Option nicht mehr relevant ist, bietet Metaspace eine hochoptimierte und effiziente Lösung für den Umgang mit Anwendungsmetadaten.
Das obige ist der detaillierte Inhalt vonWarum wird die MaxPermSize VM-Option in JDK 8 ignoriert?. 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