Avertissement de machine virtuelle Java HotSpot (TM) 64 bits: option ignorée MaxPermSize

133

Lors de la construction d'un projet Java 8 avec Maven:

mvn clean package

Je reçois ce message:

Avertissement de la VM du serveur 64 bits Java HotSpot (TM): ignorer l'option MaxPermSize = 128m; le support a été supprimé dans la version 8.0

Comment supprimer ce message?

Boris
la source
2
Voir bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458 pour une description complète
Dag
1
Il se peut qu'une instance d'IDEA soit déjà en cours d'exécution. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Réponses:

163

Le Guide de compatibilité pour JDK 8 indique que dans Java 8, l'indicateur de ligne de commande MaxPermSizea été supprimé. La raison est que la génération permanente a été supprimée du tas de hotspot et déplacée vers la mémoire native. Donc, pour supprimer ce message, modifiez la variable utilisateur d'environnement MAVEN_OPTS :

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m
Boris
la source
13
Et la raison en est que tout l'espace PermGen a été supprimé dans Oracle JRE 8, AFAIK.
Puce
1
Si quelqu'un ne sait pas comment faire cela sudo gedit ~/.profile, ajoutez la ligne à partir de la réponse et enregistrez le fichier.
gotqn
J'ai cette option dans le fichier ~ / .bashrc
paka
@gotqn Pourquoi éditeriez-vous sudoun fichier dans votre dossier personnel? Cela me semble une pratique très étrange.
Per Lundberg
22

La JVM HotSpot JDK 8 utilise désormais la mémoire native pour la représentation des métadonnées de classe et s'appelle Metaspace .

La génération permanente a été supprimée. lePermSize et MaxPermSizesont ignorés et un avertissement est émis s'ils sont présents sur la ligne de commande.

Martin Seeler
la source
Cela ne répond qu'indirectement à la question ... La réponse est "supprimer les drapeaux pour supprimer l'avertissement". Comme le révèle le commentaire perspicace de @ ohad-schneider, il n'y a pas un seul remplaçant pour eux.
conny
10
-XX:MaxPermSize=size

Définit la taille maximale de l'espace de génération permanente (en octets). Cette option était obsolète dans JDK 8 et remplacée par l' -XX:MaxMetaspaceSizeoption.

-XX:PermSize=size

Définit l'espace (en octets) alloué à la génération permanente qui déclenche un garbage collection s'il est dépassé. Cette option était obsolète dans JDK 8 et remplacée par l' -XX:MetaspaceSizeoption.

maman...
la source
12
Je pense que cela a été critiqué car cela implique que vous devriez changer les utilisations précédentes de MaxPermGenavec MaxMetaSpaceSizequi est trompeur, car leurs rôles se sont pratiquement inversés. Avant Java 8, l'espace de métadonnées de classe résidait dans PermGen, limité à 32/64 Mo, et MaxPerGenétait utilisé pour l' augmenter . Cependant, à partir de Java 8, PermGen n'existe plus et l'espace de métadonnées de classe est illimité, donc la MaxMetaspacetaille est en fait utilisée pour le réduire . Pour plus d'informations, voir: stackoverflow.com/a/31463972/67824
Ohad Schneider
8

Dans JBoss EAP 6.4, faites un clic droit sur le serveur et ouvrez la configuration de lancement sous l'argument VM que vous trouverez

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

mettre à jour

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

cela résoudra votre problème.

Amit
la source
1

J'ai reçu un message similaire lors de l'exécution de la ligne de commande mvn (version 3.3.3) sur Linux avec Java 8. En ouvrant le script maven / $ MAVEN-HOME / bin / mvn, j'ai trouvé la ligne suivante

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

Où $ MAVEN_PROJECTBASEDIR par défaut est votre répertoire personnel. Vous pouvez donc jeter un œil à deux endroits, le premier est le fichier $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config s'il existe. Deuxièmement, regardez les fichiers qui peuvent éventuellement configurer la variable d'environnement MAVEN_OPTS. Les fichiers candidats sont .bashrc, .bash_profile, .profile et les fichiers inclus par eux tels que / etc / profile, /etc/bash.bashrc

J'ai localisé

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

dans .bashrc dans mon système, changez-le en

export MAVEN_OPTS="-Xmx512m"

problème résolu

Jonathan L
la source
1

au cas où quelqu'un recevrait encore ce genre de message. Cela se produit parce que vous ajoutez un argument JVM lors de l'exécution du projet maven. Parce qu'il est lié à maven, vous pouvez vérifier votre pom.xmlfichier sur votre projet.

trouver cette ligne <argLine>...</argLine>, sur mon projet j'ai aussi l'argument ci-dessous

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

vous devez remplacer l' MaxPermSizeargument comme -Xms123m -Xmx123m, car il MaxPermSizeest déjà obsolète et ne prendra aucun effet sur votre configuration JVM:

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

Pour résoudre ce problème, nous venons de définir le chemin JDK installé dans

standalone.conf

fichier qui se trouve dans le dossier bin de JBoss \ Wildfly Server. Pour résoudre ce problème, nous procédons comme suit:

  1. Ouvrez le fichier standlone.conf qui sous le dossier JBoss_or_wildfly \ bin
  2. Dans ce fichier, recherchez le texte #JAVA_HOME .
  3. Supprimez le caractère # et définissez votre chemin JDK installé comme JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_65" J'espère que cela résoudra votre problème Merci
Salahin Rocky
la source
Le problème original est dans un projet maven. Cela n'a rien à voir avec JBoss.
Boris
-5

Pour les utilisateurs d'Eclipse ...

Cliquez sur Exécuter -> Exécuter la configuration -> sont -> définissez Alternate JRE pour 1.6 ou 1.7

Raja Rajamani
la source