miércoles, 7 de noviembre de 2007

Problema Javac java lang OutOfMemoryError









Muchos desarrolladores Java habrán tenido este error al tratar de compilar una gran cantidad de clases, java.lang.OutOfMemoryError:

The system is out of resources.
Consult the following stack trace for details.
java.lang.OutOfMemoryError: Java heap space


Si estas compilando con javac em Apache Ant, sete el atributo fork como true, para correr javac en un proceso separado con su propio espacio. Si el atributo fork es seteado false o no es seteado (por defecto es false), javac correra en el mismo proceso que Ant y su heap size sera de 64m.


<javac fork="true"
srcdir="${basedir}/src"
destdir="${basedir}/build/classes"
classpath="${project.classpath}"
memoryinitialsize="256m"
memorymaximumsize="256m">
</javac>



Si no quieres modificar el archivo build.xml, otra opcion es incrementar el heap size de la JVM Ant y seguir ejecutando javac. Solo necesitas setear la variable de entorno ANT_OPTS:

export ANT_OPTS="-Xms256m -Xmx256m" (ksh/bash)
setenv ANT_OPTS="-Xms256m -Xmx256m" (tcsh/csh)
set ANT_OPTS="-Xms256m -Xmx256m" (Windows)


De estas maneras podrás lograr compilar tus clases java si te sale este problema de memoria
;)

3 comentarios:

Anónimo dijo...

Quiero darte mis mas sinceras felicitaciones, eres uno de los pocos que ha resuelto mi duda de una manera precisa y didactica. Muchas gracias

Felipe dijo...

De nada estimado, hace varios años me encontré con ese problema y decidí compartir la solución.

Saludos

Anónimo dijo...

OUTOFMEMORYERROR: Correr el proyecto desde UIWidgetBase -> build.xml -> Ant build...; luego correrlo normal como siempre "Open external tools dialogs...". Con eso se solucionó el error por arte de magia nada del otro mundo. Nada de instalar de nuevo el ID o de crear workspaces. Lo solucione con algo mas facil, espero que a uds tambien les funcione.