martes, 24 de febrero de 2009

Java Heap Space Error

Si en algún momento encuentran en su aplicación la siguiente excepción:

Exception in thread "Thread-1" java.lang.OutOfMemoryError: Java heap space


puede ser que tengan dos posibles escenarios.

  1. Tienen una fuga de memoria en su programa ("memory leakage"). Es decir, una parte de su programa esta consumiendo demasiada memoria por un error de lógica en algún algoritmo.
  2. La aplicación realmente requiere más memoria por la cantidad de objetos que se manejan, estructura de datos muy complejas, o algoritmos muy pesados.
En tal caso lo mejor es inicializar la máquina virtual con un incremento de memoria. Para ello se pasan los siguientes parámetros.

-Xms[memoria_inicial] -Xmx[máximo_memoria]

Hay que tomar en cuenta el formato ya que si ponen "mb" en lugar de "m" para representar mega bytes, el argumento falla y no se toma en cuenta. Ejemplo de como usar los parámetros.

-Xms512m -Xmx512m

En caso de que su aplicación sea web, entonces deben buscar la opción para el servidor específico. Para Tomcat con Eclipse se agrega los parámetros en

Window > Preferences > Tomcat > JVM Settings