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