usegcoverheadlimit solucion outofmemoryerror exceeded java scala maven garbage-collection out-of-memory

java - solucion - ¿Cómo resolver el “límite de sobrecarga del GC excedido” usando maven jvmArg?



java.lang.outofmemoryerror: gc overhead limit exceeded tomcat (6)

Al ejecutar una clase tengo la siguiente excepción:

Excepción en el hilo "main" java.lang.OutOfMemoryError: límite de sobrecarga del GC excedido

He intentado aumentar el tamaño del montón jvmArg dentro de maven pom.xml del paquete de clase:

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0

<parent> (...) </parent> <artifactId>(...)</artifactId> <name>(...)</name> <properties> <javaOpts.Xmx>4g</javaOpts.Xmx> <!-- default that can be adjusted on the command line with -DjavaOpts.Xmx=... --> <(...).basedir>${project.basedir}/..</(...).basedir> </properties> <build> <plugins> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <configuration> <launchers> <launcher> <id>MyClassName</id> <mainClass>(...)</mainClass> <jvmArgs> <jvmArg>-Xmx${javaOpts.Xmx}</jvmArg> (...)

He probado la última línea citada con muchos valores:

  • <jvmArg>-Xmx512m{javaOpts.Xmx}</jvmArg>
  • <jvmArg>-Xmx4096M{javaOpts.Xmx}</jvmArg>
  • ...
  • <jvmArg>-Xmx10000000000M{javaOpts.Xmx}</jvmArg>

Pero para todos ellos tengo el mismo error.

¿Alguien puede ayudarme? Observación: Estoy huyendo de IntelliJ IDEA .


Agregar la recolección de basura paralela a la respuesta superior es probablemente la mejor opción:

-Xmx2048M -Xss128M -XX:MaxPermSize=2048M -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC


En algunos casos puede desactivar el límite de GC:

-XX:-UseGCOverheadLimit


Está agregando jvmArgs a la configuración de maven-scala-plugin en su pom.xml.

¿Qué quieres decir con que estás ejecutando desde IntelliJ IDEA? ¿Cómo exactamente estás haciendo eso? A través de su construcción / carrera no vas a ir a través de Maven en absoluto! Luego, cambiar los lanzadores de maven-scala-plugin en su pom.xml es básicamente inútil. Para cambiar las configuraciones de ejecución para IntelliJ vea esta respuesta .

Si realmente desea ejecutar desde Maven, después de agregar los parámetros jvmArg al pom.xml, debe ejecutar el complemento:

mvm scala:run -Dlauncher=MyClassName

Nota: donde pones MyClassName, ese es en realidad el nombre del lanzador, no la clase. Para muchos proyectos, la gente elige nombres razonables para los lanzadores y eso los hace coincidir a menudo con el nombre local de las clases. Pero podrías llamarlo MyLauncher si quisieras.

Leer documentos de maven-scala-plugin puede ayudarte.


Lo siento por la respuesta tardía, pero creo que mi respuesta también podría ayudar a otras personas.

scala-maven-plugin no funciona con MAVEN_OPTS, la única forma de aumentar la memoria es usar jvmArgs en la configuración del complemento. Pero debes poner jvmArgs no dentro de la sección del iniciador, sino dentro de la sección de configuración, como esto:

<configuration> <jvmArgs> <jvmArg>-Xmx1024m</jvmArg> <jvmArg>-Xms256m</jvmArg> </jvmArgs> </configuration>

Esto funciona para mí.


Tuve el mismo problema: mi proyecto wokspace consta de más de 250 módulos de Maven y al abrir un pom.xml en IDEA, las etiquetas <project> y <parent> estaban subrayadas en rojo y este error apareció cuando se movía sobre el etiquetas rotas:

java.lang.OutOfMemoryError: límite de sobrecarga del GC excedido

Mi solución :

  • establezca valores altos en >Settings >Build, Execution, Deployment >Build Tools >Maven >Importing - por ejemplo, -Xmx1g y
  • cambie la implementación de >Settings >Build, Execution, Deployment >Build Tools >Maven en >Settings >Build, Execution, Deployment >Build Tools >Maven (directorio de inicio de Maven) de (Bundled) Maven 3 a mi instalación local de maven (no la que se incluye con IDEA), por ejemplo, a /opt/maven/apache-maven-3.3.9 :

Ya que tuve problemas con el experto en paquetes antes, simplemente no confío en el experto en paquetes.


Java 7

No es un problema de Maven, necesita darle más memoria a la máquina virtual. Lo hace a través de variables de entorno , y el Lanzador de Maven recogerá automáticamente estas configuraciones en la carga, y las utilizará para configurar la Java VM subyacente.

La forma más sencilla de hacerlo es:

export MAVEN_OPTS="-Xmx1024M -Xss128M -XX:MaxPermSize=1024M -XX:+CMSClassUnloadingEnabled"

Windows:

set MAVEN_OPTS=-Xmx1024M -Xss128M -XX:MaxPermSize=1024M -XX:+CMSClassUnloadingEnabled

(No hay comillas dobles)

Java 8

Java 8 ha reemplazado la generación permanente con metaspace, y la nueva configuración se ve así:

export MAVEN_OPTS="-Xmx1024M -Xss128M -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=1024M -XX:+CMSClassUnloadingEnabled"