JVM y Memoria: Tip :: java.lang.OutOfMemoryError
7 septiembre 2006 6 comentarios
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
http://Aeegle.com
http://www.aesist.com
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
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)
y para glassfiash v3 ¿? ,
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.
Estimado “aveotero”, en windows no funciona esa parametrización, tiene un limite de aprox de 1,6 GB
pregunta: para un servidor tomcat dedicado con 3gb de ram que configuracion usarias