Avviso VM server Java HotSpot (TM) a 64 bit: ignorando l'opzione MaxPermSize


133

Quando si crea un progetto Java 8 con Maven:

mvn clean package

Ricevo questo messaggio:

Avviso VM server Java HotSpot (TM) a 64 bit: ignorando l'opzione MaxPermSize = 128m; il supporto è stato rimosso in 8.0

Come rimuovere questo messaggio?


2
Vedi bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458 per una descrizione completa
Dag

1
È possibile che sia già in esecuzione un'istanza di IDEA. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Risposte:


163

La Guida alla compatibilità per JDK 8 afferma che in Java 8 il flag della riga di comando MaxPermSizeè stato rimosso. Il motivo è che la generazione permanente è stata rimossa dall'heap dell'hotspot e spostata nella memoria nativa. Quindi per rimuovere questo messaggio modifica la variabile utente dell'ambiente MAVEN_OPTS :

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
E la ragione è che l'intero spazio PermGen è stato rimosso in Oracle JRE 8, AFAIK.
Puce,

1
Se qualcuno non sa come farlo - sudo gedit ~/.profile, aggiungi la riga dalla risposta lì e salva il file.
gotqn

Ho questa opzione impostata nel file ~ / .bashrc
paka il

@gotqn Perché dovresti sudomodificare un file nella tua cartella home? Mi sembra una pratica molto strana.
Per Lundberg,

22

Il JDK 8 JVM HotSpot sta ora utilizzando la memoria nativo per la rappresentazione dei metadati di classe e si chiama Metaspace .

La generazione permanente è stata rimossa. Gli PermSizee MaxPermSizevengono ignorati e viene emesso un avviso se sono presenti sulla riga di comando.


Questo risponde solo indirettamente alla domanda ... La risposta è "rimuovi i flag per rimuovere l'avvertimento". Come rivela il commento perspicace di @ ohad-schneider, non esiste un solo sostituto per loro.
Conny

10
-XX:MaxPermSize=size

Imposta la dimensione massima dello spazio di generazione permanente (in byte). Questa opzione è stata deprecata in JDK 8 e sostituita -XX:MaxMetaspaceSizedall'opzione.

-XX:PermSize=size

Imposta lo spazio (in byte) allocato alla generazione permanente che attiva una garbage collection se viene superata. Questa opzione è stata deprecata in JDK 8 e sostituita -XX:MetaspaceSizedall'opzione.


12
Penso che questo sia stato retrocesso perché implica che dovresti cambiare gli usi precedenti MaxPermGencon i MaxMetaSpaceSizequali è fuorviante, poiché i loro ruoli si sono praticamente invertiti. Prima dello spazio dei metadati della classe Java 8 risiedeva in PermGen che era limitato da 32/64 MB e MaxPerGenveniva utilizzato per aumentarlo . A partire da Java 8, tuttavia, PermGen non esiste più e lo spazio dei metadati della classe è illimitato, quindi le MaxMetaspacedimensioni vengono effettivamente utilizzate per ridurlo . Per ulteriori informazioni, consultare: stackoverflow.com/a/31463972/67824
Ohad Schneider,

8

In JBoss EAP 6.4, fai clic con il pulsante destro del mouse sul server e apri la configurazione di avvio nell'argomento VM che troverai

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

aggiornalo a

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

questo risolverà il tuo problema.


1

Ho ricevuto un messaggio simile quando eseguivo la riga di comando mvn (versione 3.3.3) su Linux con Java 8. Aprendo maven script / $ MAVEN-HOME / bin / mvn, ho trovato la seguente riga

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

Dove $ MAVEN_PROJECTBASEDIR per impostazione predefinita è la tua home directory. Quindi due posti in cui puoi dare un'occhiata, il primo è il file $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config se esiste. In secondo luogo, esaminare i file che potrebbero impostare la variabile di ambiente MAVEN_OPTS. I file candidati sono .bashrc, .bash_profile, .profile e quei file inclusi da loro come / etc / profile, /etc/bash.bashrc

Ho localizzato

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

in .bashrc nel mio sistema, cambiarlo in

export MAVEN_OPTS="-Xmx512m"

problema risolto


1

nel caso in cui qualcuno riceva ancora questo tipo di messaggio. Succede perché aggiungi l'argomento JVM durante l'esecuzione del progetto maven. Poiché è correlato a Maven, puoi controllare il tuo pom.xmlfile sul tuo progetto.

trova questa riga <argLine>...</argLine>, sul mio progetto ho anche argomento di seguito

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

dovresti sostituire l' MaxPermSizeargomento come -Xms123m -Xmx123m, poiché MaxPermSizeè già deprecato e non avrà alcun effetto sulla tua configurazione JVM:

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

-1

Per risolvere questo problema, abbiamo appena impostato il percorso JDK installato

standalone.conf

file che si trova nella cartella bin di JBoss \ Wildfly Server. Per risolvere questo, facciamo i seguenti passi:

  1. Aprire il file standlone.conf che si trova nella cartella JBoss_or_wildfly \ bin
  2. All'interno di questo file trova il testo #JAVA_HOME .
  3. Rimuovi il carattere # e imposta il percorso JDK installato come JAVA_HOME = "C: \ Programmi \ Java \ jdk1.8.0_65" Spero che questo risolva il tuo problema Grazie

Il problema originale è in un progetto maven. Non ha nulla a che fare con JBoss.
Boris,

-5

Per gli utenti di Eclipse ...

Fare clic su Esegui -> Esegui configurazione -> sono -> imposta Alternativo JRE per 1.6 o 1.7

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.