Warnung zur 64-Bit-Server-VM von Java HotSpot (TM): Option MaxPermSize wird ignoriert


132

Beim Erstellen eines Java 8-Projekts mit Maven:

mvn clean package

Ich bekomme diese Nachricht:

Java HotSpot (TM) 64-Bit-Server-VM-Warnung: Option MaxPermSize = 128m wird ignoriert; Unterstützung wurde in 8.0 entfernt

Wie entferne ich diese Nachricht?


2
Eine vollständige Beschreibung finden Sie unter bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458
Dag

1
Möglicherweise wird bereits eine Instanz von IDEA ausgeführt. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Antworten:


163

Das Kompatibilitätshandbuch für JDK 8 besagt, dass in Java 8 das Befehlszeilenflag MaxPermSizeentfernt wurde. Der Grund dafür ist, dass die permanente Generierung aus dem Hotspot-Heap entfernt und in den nativen Speicher verschoben wurde. Um diese Nachricht zu entfernen, bearbeiten Sie die MAVEN_OPTS- Umgebungsbenutzervariable:

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
Der Grund dafür ist, dass der gesamte PermGen-Speicherplatz in Oracle JRE 8, AFAIK, entfernt wurde.
Puce

1
Wenn jemand nicht weiß, wie das geht - sudo gedit ~/.profilefügen Sie dort die Zeile aus der Antwort hinzu und speichern Sie die Datei.
Gotqn

Ich habe diese Option in der Datei ~ / .bashrc festgelegt
paka

@gotqn Warum sollten Sie sudoeine Datei in Ihrem Home-Ordner bearbeiten? Scheint mir eine sehr seltsame Übung zu sein.
Per Lundberg

22

Die JDK 8 HotSpot JVM verwendet jetzt nativen Speicher für die Darstellung von Klassenmetadaten und heißt Metaspace .

Die permanente Generation wurde entfernt. Die PermSizeund MaxPermSizewerden ignoriert und eine Warnung wird ausgegeben, wenn sie in der Befehlszeile vorhanden sind.


Dies beantwortet die Frage nur indirekt ... Die Antwort lautet "Entfernen Sie die Flags, um die Warnung zu entfernen". Als interessanter Kommentar von @ Ohad-schneider zeigt, gibt es kein ein einziges Ersatz für sie.
Conny

10
-XX:MaxPermSize=size

Legt die maximale Größe des permanenten Generierungsbereichs (in Byte) fest. Diese Option wurde in JDK 8 nicht mehr unterstützt und durch die -XX:MaxMetaspaceSizeOption ersetzt.

-XX:PermSize=size

Legt den der permanenten Generierung zugewiesenen Speicherplatz (in Byte) fest, der eine Speicherbereinigung auslöst, wenn diese überschritten wird. Diese Option wurde in JDK 8 nicht mehr unterstützt und durch die -XX:MetaspaceSizeOption ersetzt.


12
Ich denke , das Downvoted wurde , weil es bedeutet , dass Sie frühere Verwendungen wechseln sollten MaxPermGenmit MaxMetaSpaceSizeder irreführend ist, da ihre Rollen praktisch umgekehrt haben. Vor der Java 8-Klasse befand sich der Metadatenbereich in PermGen, der auf 32/64 MB begrenzt war, und MaxPerGenwurde verwendet, um ihn zu erhöhen . Ab Java 8 ist PermGen jedoch nicht mehr verfügbar und der Speicherplatz für Klassenmetadaten ist unbegrenzt. Daher wird die MaxMetaspaceGröße tatsächlich verwendet, um ihn zu verringern . Weitere Informationen finden Sie unter: stackoverflow.com/a/31463972/67824
Ohad Schneider

8

Klicken Sie in JBoss EAP 6.4 mit der rechten Maustaste auf den Server und öffnen Sie die Startkonfiguration unter dem VM-Argument, das Sie finden

{-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m}

aktualisieren Sie es auf

{-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m}

Dies wird Ihr Problem lösen.


1

Beim Ausführen der Befehlszeile mvn (Version 3.3.3) unter Linux mit Java 8 wurde eine ähnliche Meldung angezeigt. Durch Öffnen des Maven-Skripts / $ MAVEN-HOME / bin / mvn wurde die folgende Zeile gefunden

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

Wobei $ MAVEN_PROJECTBASEDIR standardmäßig Ihr Home-Verzeichnis ist. Zwei Stellen, die Sie sich ansehen können, ist die Datei $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config, falls vorhanden. Schauen Sie sich zweitens Dateien an, in denen möglicherweise die Umgebungsvariable MAVEN_OPTS eingerichtet ist. Kandidatendateien sind .bashrc, .bash_profile, .profile und die darin enthaltenen Dateien wie / etc / profile, /etc/bash.bashrc

Ich habe gefunden

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"

Ändern Sie es in .bashrc in meinem System in

export MAVEN_OPTS="-Xmx512m"

Problem gelöst


1

für den Fall, dass jemand diese Art von Nachricht noch erhält. Dies liegt daran, dass Sie beim Ausführen eines Maven-Projekts ein JVM-Argument hinzufügen. Da es mit maven zusammenhängt, können Sie Ihre pom.xmlDatei in Ihrem Projekt überprüfen .

Finden Sie diese Zeile <argLine>...</argLine>, auf meinem Projekt habe ich auch unten Argument

<argLine>-Xmx1024m -XX:MaxPermSize=512m -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

Sie sollten das MaxPermSizeArgument als ersetzen -Xms123m -Xmx123m, da MaxPermSizees bereits veraltet ist und keine Auswirkungen auf Ihre JVM-Konfiguration hat:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

-1

Um dieses Problem zu lösen, haben wir gerade den installierten JDK-Pfad festgelegt

standalone.conf

Datei, die sich im Ordner bin von JBoss \ Wildfly Server befindet. Um dies zu lösen, führen wir die folgenden Schritte aus:

  1. Öffnen Sie die standlone.conf Datei , die unter JBoss_or_wildfly Ordner \ bin
  2. Suchen Sie in dieser Datei nach #JAVA_HOME- Text.
  3. Entfernen Sie das Zeichen # und legen Sie Ihren installierten JDK-Pfad als JAVA_HOME = "C: \ Programme \ Java \ jdk1.8.0_65" fest. Ich hoffe, dies wird Ihr Problem lösen. Danke

Das ursprüngliche Problem liegt in einem Maven-Projekt. Es hat nichts mit JBoss zu tun.
Boris

-5

Für Eclipse-Benutzer ...

Klicken Sie auf Ausführen -> Konfiguration ausführen -> sind -> Alternative JRE für 1.6 oder 1.7 festlegen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.