¿Como solucionar un ERROR?

Andres Isabel Medrano
01 de Febrero del 2006
Un saludo al que lea el mensaje.
Al ejecutar una aplicación se produce el siguiente error, "java.lang.OutOfMemoryError"
y en el ordenador tengo memoria suficiente ¿a que puede deberse este error? lo curioso es que el error se produce al iniciar (dentro de la misma aplicación) un nuevo JFrame.
Muchas gracias por vuestras respuestas.

irais
01 de Febrero del 2006
Por favor. Como puedo aumentar la memoria de la JVM en Tomcat 5 sobre W2003 Server?
Me da un OutOfMemoryError. Muchas gracias!!!! ...

Luismahou
01 de Febrero del 2006
Hola!

Creo que Java proporciona 64 Megas por defecto. Esto se puede modificar si cuando ejecutas tu aplicación pones el parámetro -Xmx"n"M, donde "n" es el número de Megas que quieres, por ejemplo:
java -Xmx128M miAplicacion.class
Se ejecutaría con 128 Megas de memoria.

Para detectar errores tienes que hacer lo mismo que con las Excepciones, en tu caso:

try {
}
catch (OutOfMemoryError e) {
}

el problema está en que si lo pones por ejemplo en el main() seguro que no recogerás el error. Para detectarlos tienes que saber más o menos donde se producen (cuando crees variables que necesiten mucha memoria, por ejemplo) y poner el bloque try/catch ahí.
De todos modos me parece un poco raro que te quedes sin memoria nada más arrancar la aplicación. Comprueba que no creas variables que usen mucha memoria (arrays, buffers, etc). Un simple GUI (JFrame, Jbutton, etc) no debería darte problemas de memoria.

Otra cosa que podrías hacer es sacar por consola (DOS) println's de la memoria utilizada y la memoria libre (Runtime.getRuntime().totalMemory() y Runtime.getRuntime().freeMemory()).

Luismahou

Andres Isabel Medrano
01 de Febrero del 2006
Muchas gracias por la respuesta.
El problema de memoria surge porque estoy utilizando un programa llamado GLG para diseño de Interface que utiliza muchos "dibujitos" y consume mucha memoria, en principio voy a tratar de modificar la memoria utilizada tal y como me propones.