JVM y Memoria: Tip :: java.lang.OutOfMemoryError

A veces, a los programadores se nos olvida el uso de la memoria por parte de la maquina virtual de JAVA. Siendo esta un proceso mas que corre sobre un sistema operativo necesita la asignacion de recurso de este.

La JVM es el anclaje “fisico” de nuestro maravilloso lenguaje multiplataforma con el Sistema Operativo correspondiente y, como tal, ocupa y utiliza memoria del sistema. Bien, esto es evidente pero, lo que es menos conocido, es como esta implementada esta gestion de memoria.
La JVM se arranca reservando, por defecto, 64MB de memoria para trabajar que va ampliando segun necesidades. Sin embargo, estas sucesivas ampliaciones automaticas llegan a un limite. Podemos gestionar nosotros mismos estos limites tanto por arriba como por abajo, a traves de unos parametros que se le lanza al comando de arranque de la JVM.
Esto es IMPORTANTE si sabemos que nuestra aplicacion va a requerir una gran cantidad de memoria para su funcionamiento y queremos evitar una OutOfMemoryError o si por el contrario, nuestra aplicacion compite con otras de mayor prioridad en un sistema y queremos que utilice solo una parcela de memoria.

Los parametros de gestion de memoria son estos:

-Xms establece la cantidad inicial de memoria
-Xmx establece la cantidad maxima de memoria
-Xss establece el tamaño de pila del hilo JAVA

Es decir, si quisieramos arrancar nuestra aplicacion con una cantidad de memoria asignada de 64MB y queremos que llegue a utilizar un GB, por ejemplo, tendriamos que lanzar un script de la siguiente manera:

java -Xms64m -Xmx1024m

con esto estariamos evitando un posible

java.lang.OutOfMemoryError

Configuracion para TOMCAT

SETEAR–
en
catalina.bat (windows)
set CATALINA_OPTS=-Xms64m -Xmx1024m

catalina.sh (linux)
CATALINA_OPTS=”-Xms64m -Xmx1024m”
export CATALINA_OPTS

6 Responses to JVM y Memoria: Tip :: java.lang.OutOfMemoryError

  1. Anónimo dice:

    nuevo

    me indican que el maximo heap space es de 2 Gb en JBoss, es esto cierto, como se configura para ampliar por ejemplo a 8 Gb

  2. aveotero dice:

    1. Abrir el archivo “run.bat” que esta bajo $JBOSS_HOME/bin y encuentra la linea que contiene

    rem Sun JVM memory allocation pool parameters. Modify as appropriate.
    set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx256m

    2. Cambia de “-Xmx256m” a -Xmx8192m

    3. Guarda los cambios en el archivo run.bat y reinicia en servidor

    Hemos establesido el tamaño maximo de memoria a 8GB(8192MB)

  3. ERIK dice:

    y para glassfiash v3 ¿? , :D

  4. aveotero dice:

    Erik, no tengo en estos momentos una instalación de Glassfish accesible, para darte bien el detalle, pero en glassfish es facilito, estos parametros los cambias desde la Consola de Administración web, no tienes que modificar tu directamente los ficheros. Una vez cambiados los parametros el App. Serv. te pedira que lo reinicies y listo.

  5. jact dice:

    Estimado “aveotero”, en windows no funciona esa parametrización, tiene un limite de aprox de 1,6 GB

  6. pregunta: para un servidor tomcat dedicado con 3gb de ram que configuracion usarias

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 115 seguidores