Como configurar el uso de memoria de un servidor en Eclipse

Como configurar el uso de memoria de un servidor en Eclipse

| April 5, 2011 | 0 Comments

La máquina virtual Java usa fundamentalmente dos tipos de memoria. La memoria Heap donde se crean los objetos y que es gestionada por el Recolector de basura que se encarga de liberar memoria en caso necesario. Y la memoria PermGen que se utiliza principalmente para cargar las definiciones de las clases de forma permanente.

Pues bien si queremos configurar la cantidad de memoria asignada a nuestros servidores de aplicaciones configurados estos desde dentro de Eclipse se han de seguir los siguientes pasos:

1) En Eclipse, ir a: Run -> Run configurations -> TuServidor -> Arguments -> VM Arguments

2) Para evitar el clásico java.lang.OutOfMemoryError: Java Heap space, usar las opciones de la VM:

-Xms64m
-Xmx256m

Es un ejemplo que asigna 64mb a la memoria heap de inicio y le permite crecer hasta un máximo de 256mb. Esta configuración debería ser más que suficiente si estás en desarrollo y sólo tienes una aplicación configurada para arrancar en el servidor. Antes de incrementarla, tómate unos segundos para meditar si el fallo pudiera ser causa de un memory leak.

3) Para evitar el igualmente clásico java.lang.OutOfMemoryError: PermGen space, usar las opciones de la VM:

-XX:PermSize=64m
-XX:MaxPermSize=128m

Es un ejemplo que asigna 64mb a la memoria perm de inicio y le permite crecer hasta un máximo de 128mb. De nuevo, este ejemplo debería ser más que suficiente si sólo tienes un par de aplicaciones configuradas en el servidor. Aunque todo dependerá del número de despliegues en caliente que realices habitualmente sin reiniciar el servidor.

Existe una opción alternativa que es  forzar que el garbage collector recicle la memoria permgen. Para ello prueba a activar el recolector concurrente con los siguientes parámetros:

-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled

Sin embargo, el funcionamiento del recolector de basura funciona “a su aire” por lo que no es seguro que tenga que ejecutar ni cuando ni como tu crees que lo vaya a hacer.

Algunas referencias útiles: