Advertencia de la máquina virtual del servidor Java HotSpot (TM) de 64 bits: ignorando la opción MaxPermSize


133

Al construir un proyecto Java 8 con Maven:

mvn clean package

Recibo este mensaje:

Advertencia de máquina virtual del servidor Java HotSpot (TM) de 64 bits: ignorando la opción MaxPermSize = 128m; el soporte fue eliminado en 8.0

¿Cómo eliminar este mensaje?


2
Ver bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458 para una descripción completa
Dag

1
Es posible que ya tenga una instancia de IDEA ejecutándose. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Respuestas:


163

La Guía de compatibilidad para JDK 8 dice que en Java 8 MaxPermSizese eliminó el indicador de línea de comando . La razón es que la generación permanente se eliminó del montón de puntos de acceso y se movió a la memoria nativa. Entonces, para eliminar este mensaje, edite la variable de usuario de entorno MAVEN_OPTS :

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
Y la razón es que todo el espacio PermGen se ha eliminado en Oracle JRE 8, AFAIK.
Puce

1
Si alguien no sabe cómo hacer esto sudo gedit ~/.profile, agregue la línea de la respuesta allí y guarde el archivo.
gotqn 01 de

Tengo esta opción configurada en el archivo ~ / .bashrc
paka

@gotqn ¿Por qué sudoeditaría un archivo en su carpeta de inicio? Me parece una práctica muy extraña.
Según Lundberg el

22

El JDK 8 HotSpot JVM ahora está usando memoria nativa para la representación de metadatos de clase y se llama Metaspace .

La generación permanente ha sido eliminada. El PermSizey MaxPermSizese ignoran y se emite una advertencia si están presentes en la línea de comando.


Esto solo indirectamente responde la pregunta ... La respuesta es "eliminar las banderas para eliminar la advertencia". Como revela el perspicaz comentario de @ ohad-schneider, no hay un solo reemplazo para ellos.
conny

10
-XX:MaxPermSize=size

Establece el tamaño máximo de espacio de generación permanente (en bytes). Esta opción fue desaprobada en JDK 8 y reemplazada por la -XX:MaxMetaspaceSizeopción.

-XX:PermSize=size

Establece el espacio (en bytes) asignado a la generación permanente que desencadena una recolección de basura si se excede. Esta opción fue desaprobada en JDK 8 y reemplazada por la -XX:MetaspaceSizeopción.


12
Creo que esto se downvoted porque implica que debe cambiar los usos previos de MaxPermGenla MaxMetaSpaceSizecual es engañoso, ya que sus papeles se han invertido prácticamente. Antes del espacio de metadatos de la clase Java 8 residía en PermGen, que estaba limitado por 32 / 64MB, y MaxPerGense usaba para aumentarlo . Sin embargo, a partir de Java 8, PermGen ya no existe y el espacio de metadatos de la clase es ilimitado, por lo que el MaxMetaspacetamaño se usa realmente para disminuirlo . Para obtener más información, consulte: stackoverflow.com/a/31463972/67824
Ohad Schneider

8

En JBoss EAP 6.4, haga clic derecho en el servidor y abra la configuración de inicio en el argumento VM que encontrará

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

actualizarlo a

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

Esto resolverá su problema.


1

Recibí un mensaje similar al ejecutar la línea de comandos mvn (versión 3.3.3) en Linux con Java 8. Al abrir el script maven / $ MAVEN-HOME / bin / mvn, encontré la siguiente línea

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

Donde $ MAVEN_PROJECTBASEDIR por defecto es su directorio de inicio. Entonces, dos lugares que puede ver, primero es el archivo $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config si existe. En segundo lugar, observe los archivos que posiblemente configuran la variable de entorno MAVEN_OPTS. Los archivos candidatos son .bashrc, .bash_profile, .profile y los archivos incluidos por ellos, como / etc / profile, /etc/bash.bashrc

Yo ubiqué

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

en .bashrc en mi sistema, cámbielo a

export MAVEN_OPTS="-Xmx512m"

problema resuelto


1

en caso de que alguien todavía reciba este tipo de mensaje. Sucede porque agrega el argumento JVM cuando ejecuta el proyecto maven. Debido a que está relacionado con Maven, puede verificar su pom.xmlarchivo en su proyecto.

encuentre esta línea <argLine>...</argLine>, en mi proyecto también tengo un argumento a continuación

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

debe reemplazar el MaxPermSizeargumento ya que -Xms123m -Xmx123mya MaxPermSizeestá en desuso y no tendrá ningún efecto en su configuración de JVM:

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

-1

Para resolver este problema, acabamos de configurar la ruta JDK instalada en

standalone.conf

archivo que se encuentra en la carpeta bin del servidor JBoss \ Wildfly. Para resolver esto hacemos los siguientes pasos:

  1. Abra el archivo standlone.conf que se encuentra en la carpeta JBoss_or_wildfly \ bin
  2. Dentro de este archivo, busque el texto #JAVA_HOME .
  3. Elimine el carácter # y configure su ruta JDK instalada como JAVA_HOME = "C: \ Archivos de programa \ Java \ jdk1.8.0_65" Espero que esto resuelva su problema Gracias

El problema original está en un proyecto maven. No tiene nada que ver con JBoss.
Boris

-5

Para usuarios de Eclipse ...

Haga clic en Ejecutar -> Ejecutar configuración -> son -> establecer JRE alternativo para 1.6 o 1.7

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.