Recibo este mensaje durante la construcción de mi proyecto.
java.lang.OutOfMemoryError: espacio de almacenamiento dinámico de Java
¿Cómo puedo aumentar el espacio del montón? Tengo 8 Gb o RAM, es imposible que maven haya consumido 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 del montón de Java en Windows?
Respuestas:
La variable de entorno a establecer es
MAVEN_OPTS
, por ejemploMAVEN_OPTS=-Xmx1024m
. Lamaxmem
configuración en el pom solo se aplica cuando configura el complemento del compilador para que se bifurquejavac
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 pasada en la línea de comando a través deMAVEN_OPTS
.Para configurar MAVEN_OPTS en Windows 7:
-Xmx1024m
(o más)Abra una nueva ventana de comando y ejecute
mvn
.fuente
Si se está quedando sin espacio de almacenamiento dinámico durante la ejecución de prueba de JUnit infalible (o segura), es posible que cambiar MAVEN_OPTS no le ayude. 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. Necesita configurar surefire en su pom para agregar más memoria para los JUnits.
¡Con suerte, esto puede ahorrarle tiempo a alguien más!
Editar: Solución de copia del blog de Keith Chapman en caso de que el enlace se rompa algún día:
Actualización (31/5/2017): Gracias a @johnstosh por señalar esto, surefire ha evolucionado un poco desde que publiqué esta respuesta. Aquí hay un enlace a su documentación y una muestra de código actualizado (la línea arg sigue siendo la parte importante para esta pregunta):
fuente
Debe ser el mismo comando, excepto SET en lugar de EXPORT
fuente
C:\my_project>MAVEN_OPTS=-Xmx512m 'MAVEN_OPTS' is not recognized as an internal or external command, operable program or batch file.
En Mac: en lugar de
JAVA_OPTS
yMAVEN_OPTS
, usa _JAVA_OPTIONS. ¡Esto funciona!fuente
Después de intentar usar la variable MAVEN_OPTS sin suerte, encontré este sitio que funcionó para mí. Así que todo lo que tuve que hacer fue agregar -Xms128m -Xmx1024m a las opciones predeterminadas de VM y funcionó.
Para cambiarlos en Eclipse, vaya a Ventana -> Preferencias -> Java -> JRE instalados. Seleccione el JRE / JDK marcado y haga clic en editar.
fuente
En ventanas:
Agregue una variable de entorno (en las variables del sistema y 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, hágalos en relación con el tamaño de su memoria.
Tuve ese problema y esto lo solucionó, ¡nada más!
fuente
Funcionó: para cambiar en Eclipse, vaya a Ventana -> Preferencias -> Java -> JRE instalados. Seleccione el JRE / JDK marcado y haga clic en editar.
Argumentos de VM predeterminados = -Xms128m -Xmx1024m
fuente
Busca 2 opciones para
java
:Colóquelos en la invocación de la línea de comandos del
java
ejecutable, así:Tenga en cuenta que es posible que desee que los tamaños de montón inicial y máximo sean los mismos, según la aplicación, ya que evita cambiar el tamaño del montón durante el tiempo de ejecución (lo que puede llevar tiempo en las aplicaciones que deben responder). Cambiar el tamaño del montón puede implicar mover muchos objetos y rehacer la contabilidad.
Para proyectos de todos los días, conviértalos en lo que crea que sea lo suficientemente bueno. Perfil de ayuda.
fuente