Configurar el tamaño de la maquina virtual de java , error java.lang.OutOfMemoryError

129 views
Skip to first unread message

Juan Manuel Lopez

unread,
Oct 1, 2009, 4:31:35 PM10/1/09
to jav...@googlegroups.com, TecnicasAvanzad...@gruposyahoo.com.ar
Hola que tal? tengo un pequeño problema en una aplicacion a ver si
alguien me puede dar una mano

cuando ejecuto el servidor se me levanta un script configurado de esta
manera el tamaño de la jvm la cuestion es que este tamaño de memoria
no me alcanza para mi aplicacion por ende pincha y me arroja un error
al querer ejectuar un proceso que convierte un archivo que , un
informe al cual un proceso lo convierte a excel, pero al ejecutarlo me
arroja el error de que no posee memoria sufciente inicialemente estaba
configrado en 758 MB e indica un eror de outOfMemoryError, se ha
intentado aumentar el tamaño de la JVM hasta 1768M y sigue indicando
el mismo error. ahora cuando aumente el tamaño ah casi 2 gb
me indica este error "Error occurred during initialization of
VM Could not reserve enough space for heap offset array"

$JDK_HOME/bin/java -mx758m -ms4m -ss512k -$FLAG_STACK
-Duser.language=es -classpath $CLASSPATH server.server.Start $contador
&


Con este configuracion ejecuto mi clase de prueba

$JDK_HOME/bin/java -mx1024m -ms4m -ss512k -ss1m -classpath $CLASSPATH:
server/querySAFI/generarExcel $1 $2

Eh encontrado investigando que puedo usar una opcion de la jvm que
-XX:PermSize -XX:MaxPermSize me permiten determinar el tamaño de
memoria que se utilizara al iniciar la apicacion pero aun no me queda
bien en claro como es que me lo define ya que nose si me con el
PermSize me reserva un espacio de memoria dentro de la JVM o a medida
que se ejecuta el proceso o le vanta el class, o otra situacion?

Desde ya cualquier ayuda o sugerencia,sera agradecida

Saludos Cordiales
Juan Manuel Lopez

Pablo Ruggia

unread,
Oct 1, 2009, 4:44:14 PM10/1/09
to jav...@googlegroups.com
Tu server es 64 bits ? Si no ningun proceso del sistema operativo puede pasar los 2 GB de memoria.
Si probas con 1.8 GB te sigue tirando lo mismo ?

2009/10/1 Juan Manuel Lopez <juan.l...@gmail.com>

Dante Artica

unread,
Oct 1, 2009, 4:45:26 PM10/1/09
to jav...@googlegroups.com
Solución
 1. Si consumes muchos recursos implica que la solicion para tu problema no es la adecuada.
 2. Si piensas q estas en lo correcto entonces tu rutina de programacion esta mal.
 3. Si quieres seguir equivocado ve a la config JVM del Servidor y aumentale la Memoria.

David Castañeda

unread,
Oct 1, 2009, 7:21:41 PM10/1/09
to jav...@googlegroups.com
Deberias colocar la exception que te sale....

PermSize te permite modificar un espacio que esta reservado para las
clases que el sistema ha cargado y talvez no tenga que ver con tu
problema, en cualquier caso lo mejor que puedes hacer es correr tu
aplicación con jconsole a ver donde se puede estar disparando el uso
de la memoria y también colocar bien las opciones de la JVM :) porque
se los estas escribiendo mal.

-Xms200m
-Xmx758m


2009/10/1 Dante Artica <dar...@gmail.com>:
--
David Castañeda R.

Pablo Saavedra

unread,
Oct 1, 2009, 9:31:56 PM10/1/09
to jav...@googlegroups.com
Pablo Ruggia tiene razón. De hecho, si estás procesando un archivo, seguramente el problema que tengas sea un leak de memoria. Sugerencia:

- inicia la JVM con -XX:+HeapDumpOnOutOfMemoryError (googlealo, lo estoy escribiendo de memoria).

- Cuando te tira la excepcion, te va a generar un dump de la memoria a un archivo (hprof?)

- Con el eclipse MAT, abri el archivo y te va a dar una idea de qué es lo que te está comiendo tanta memoria.

Probables causas: no estás haciend flush del archivo a disco, o liberando cosas que ya procesaste.

Saludos.

2009/10/1 David Castañeda <davi...@gmail.com>
Reply all
Reply to author
Forward
0 new messages