Warum sollte es speziell helfen, ein PermGen OutOfMemoryError-Problem zu beheben?
Außerdem Bonuspunkte für eine Antwort, die mich auf die Dokumentation zu JVM-Argumenten verweist ...
java
jvm
jvm-arguments
Geoff
quelle
quelle
Antworten:
Im permanenten Bereich werden die von der VM verwendeten Klassen, Methoden, internalisierten Zeichenfolgen und ähnlichen Objekte gespeichert und niemals freigegeben (daher der Name).
Dieser Oracle-Artikel beschreibt kurz und bündig die Funktionsweise und Parametrisierung des HotSpot GC und empfiehlt Ihnen, diesen Speicherplatz zu erweitern, wenn Sie viele Klassen laden (dies ist normalerweise bei Anwendungsservern und einigen IDE wie Eclipse der Fall):
Beachten Sie, dass in dieser anderen Oracle-Dokumentation die anderen HotSpot-Argumente aufgeführt sind.
Update: Ab Java 8 sind sowohl der Permgen-Speicherplatz als auch diese Einstellung weg. Das für geladene Klassen und Methoden verwendete Speichermodell ist unterschiedlich und nicht eingeschränkt (mit Standardeinstellungen). Sie sollten diesen Fehler nicht mehr sehen.
quelle
-XX:PermSize -XX:MaxPermSize
werden verwendet, um die Größe für die permanente Generierung festzulegen.Permanente Generierung: In der permanenten Generierung werden Klassendateien gespeichert. Dies ist das Ergebnis kompilierter Klassen und JSP-Seiten. Wenn dieser Speicherplatz voll ist, wird eine vollständige Speicherbereinigung ausgelöst. Wenn die Full Garbage Collection alte nicht referenzierte Klassen nicht bereinigen kann und kein Platz mehr zum Erweitern des permanenten Speicherplatzes vorhanden ist, wird ein Out-of-Memory-Fehler (OOME) ausgelöst und die JVM stürzt ab.
quelle
In Java 8 wird dieser Parameter häufig zum Drucken einer Warnmeldung wie der folgenden verwendet:
Der Grund, warum Sie diese Nachricht in Java 8 erhalten, ist, dass Permgen durch Metaspace ersetzt wurde, um einige der Nachteile von PermGen zu beheben (wie Sie selbst sehen konnten, besteht einer dieser Nachteile darin, dass es eine feste Größe hatte).
Zu Ihrer Information: Ein Artikel über Metaspace: http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html
quelle