smartgsm - Establecer el espacio de almacenamiento dinámico de Java bajo Maven 2 en Windows
zte maven 2 root (8)
Recibo este mensaje durante la compilación de mi proyecto
java.lang.OutOfMemoryError: espacio de pila de Java
¿Cómo puedo aumentar el espacio de montón, tengo 8 GB o RAM es imposible que maven consumió tanto, encontré esto http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the-java-heap-memory-for-maven-2-on-linux/ cómo hacerlo en Linux, pero estoy en Windows 7. ¿Cómo puedo cambiar el espacio de heap de Java en Windows?
Debería ser el mismo comando, excepto SET en lugar de EXPORTAR
- establecer MAVEN_OPTS = -Xmx512m le daría 512Mb de pila
- establecer MAVEN_OPTS = -Xmx2048m le daría 2Gb de pila
Después de tratar de usar la variable MAVEN_OPTS sin suerte, encontré este site que funcionó para mí. Así que todo lo que tuve que hacer fue agregar -Xms128m -Xmx1024m a las opciones de VM predeterminadas y funcionó.
Para cambiarlos en Eclipse, vaya a Ventana -> Preferencias -> Java -> JRE instalados. Seleccione el JRE / JDK verificado y haga clic en editar.
En Mac: en lugar de JAVA_OPTS
y MAVEN_OPTS
, use _JAVA_OPTIONS en su lugar. ¡Esto funciona!
En windows:
Agregue una variable de entorno (tanto en el sistema como en las variables del usuario, tengo un problema extraño, que obtiene la var de varios lugares, así que los agrego en ambos).
Nómbrelo MAVEN_OPTS.
El valor será: -Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled
Los números pueden ser diferentes, hacerlos relativos a su tamaño de memoria.
Tuve ese problema y esto lo solucionó, ¡nada más!
Funcionó: para cambiar en Eclipse, vaya a Ventana -> Preferencias -> Java -> JRE instalados. Seleccione el JRE / JDK verificado y haga clic en editar.
Argumentos VM predeterminados = -Xms128m -Xmx1024m
Si se está quedando sin espacio libre durante la ejecución de la prueba JUnit segura (o segura), cambiar MAVEN_OPTS puede no ser de ayuda. Seguí probando diferentes configuraciones en MAVEN_OPTS sin suerte hasta que encontré esta publicación que solucionó el problema.
Básicamente, los JUnits se bifurcan en su propio entorno e ignoran la configuración en MAVEN_OPTS. Debe configurar surefire en su pom para agregar más memoria para los JUnits.
¡Espero que esto pueda salvar a alguien más en algún momento!
Editar: solución de copia del blog de Keith Chapman en caso de que el enlace se rompa algún día:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
<argLine>-Xms256m -Xmx512m</argLine>
<testFailureIgnore>false</testFailureIgnore>
<skip>false</skip>
<includes>
<include>**/*IntegrationTestSuite.java</include>
</includes>
</configuration>
</plugin>
Actualización (31/05/2017): gracias a @johnstosh por señalar esto, seguro ha evolucionado un poco desde que @johnstosh esta respuesta. Aquí hay un enlace a su documentation y un ejemplo de código actualizado (la línea arg sigue siendo la parte importante para esta pregunta):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<forkCount>3</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
<workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
</configuration>
</plugin>
Usted está buscando 2 opciones para java
:
- -Xmx tamaño máximo de almacenamiento dinámico
- -Xms comenzando el tamaño del montón
Póngalos en su invocación de línea de comando del ejecutable java
, así:
java -Xms512M -Xmx1024M my.package.MainClass
Tenga en cuenta que puede desear que los tamaños de inicio y de almacenamiento dinámico máximo sean los mismos, dependiendo de la aplicación, ya que evita el cambio de tamaño del almacenamiento dinámico durante el tiempo de ejecución (lo que puede llevar tiempo en aplicaciones que necesitan ser receptivas). Cambiar el tamaño del montón puede implicar mover una gran cantidad de objetos y volver a hacer la contabilidad.
Para proyectos de todos los días, hazlos lo que creas que sean lo suficientemente buenos. Perfil para obtener ayuda.
La variable de entorno para establecer es MAVEN_OPTS
, por ejemplo MAVEN_OPTS=-Xmx1024m
. La configuración de maxmem
en el pom solo se aplica cuando configura el complemento del compilador para bifurcar javac
en una nueva JVM. De lo contrario, el complemento se ejecuta dentro de la misma máquina virtual que Maven y, por lo tanto, dentro de la memoria pasó a la línea de comando a través de MAVEN_OPTS
.
Para establecer MAVEN_OPTS en Windows 7:
- Haga clic derecho en Mi PC y seleccione Propiedades (atajo de teclado presione Windows + Pausa / Pausa )
- Haga clic en el enlace Configuración avanzada del sistema ubicado en la barra de navegación izquierda de Propiedades del sistema para visualizar las Propiedades avanzadas del sistema
- Vaya a la pestaña Avanzado y haga clic en el botón Variables de entorno ubicado en la parte inferior de la ventana de configuración de Propiedades avanzadas del sistema
- Cree una nueva variable de usuario, establezca el nombre de la Variable en MAVEN_OPTS y establezca el valor de la Variable en
-Xmx1024m
(o más)
Abra una nueva ventana de comando y ejecute mvn
.