Voy a plantear un problema real relacionada con la memoria de la JVM de Java que aparentemente tiene solución pero que no consigo dar exactamente con la solución. Espero que me ayuden.

Un usuario necesita subir un documento de 50 megas al gestor documental de la aplicación, pero le da error de Java Heap Space. Hasta ahora lo habíamos solucionado poniendo en la configuración de la JVM del cliente el parámetro –Xmx128m. Pero este parámetro sólo dejaba subir ficheros de 15 megas como máximo.

Por lo que podido investigar haciendo pruebas en la máquina de desarrollo, creo que hay que incrementar la zona de memoria de la JVM que se denomina “Eden Space” (ver imagen adjunta). Al incrementar esa zona, se decrementa la “Tenured Gen” (son inversamente proporcionales). He ampliado todo lo posible la memoria, pero no consigo subirla todo lo que quiero porque Tomcat no arranca.

Se que es la “Eden Space” la que hay que tocar porque al principio tenía 17 megas, y no me dejaba subir un fichero de 18mb. En cuanto la amplié ya me dejó (la tuve que ampliar casi hasta 200 megas). Pero he conseguido ampliarla hasta 344 Megas, pero el fichero de 53 megas me sigue sin dejar subirlo.

Yo he utilizado el software LambdaProject para poder monitorizar las zonas de memoria y ver si los ajustes que realizo en Tomcat se están realizando.

Estos son los parámetros que como máximo he podido aplicar a Tomcat:

-Xmx768M
-Xms64M
-XX:PermSize=256m
-XX:MaxPermSize=768
-XX:NewRatio=2
-Dcom.sun.management.jmxremote

configtomcat Memoria de la JVM

El último parámetro es necesario para LambdaProject para poder mostrar los gráficos.

Sabiendo que lo que pongamos en Xmx, tendremos la siguiente relación Xmx = TenuredSpace + EdenSpace. Y que por defecto, EdenSpace es 1:2 de la TenuredSpace. Si queremos cambiar esa relación añadimos el parámetro -XX:NewRatio=2 (valor por defecto). En el siguiente ejemplo hemos puesto una relación 1:1 para que tengan el mismo tamaño.

lambdaproject Memoria de la JVM

Aunque haya utilizado -Xmx768M y LambdaProject me confirme el nuevo tamaño, Java console me dice que la memoria es de 64 Mb. ¿Alguien sabría decirme porqué?

Gracias a todos por la colaboración.

Un saludo.

Dime qué te ha parecido el artículo...

rating off Memoria de la JVMrating off Memoria de la JVMrating off Memoria de la JVMrating off Memoria de la JVMrating off Memoria de la JVM (Ninguna valoración todavía)
loading Memoria de la JVMCargando…
Advertisements

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies

Veo que te gusta mi Blog...

Si te ha parecido interesante este artículo, no esperes a suscribirte a mi blog. Cuando vuelva a escribir otro seguro que te interesará y no desearás no haberte enterado. Puedes suscribirte con total tranquilidad de que no recibirás spam. Lo odio igual que tu. Solo quiero que aprendas cosas nuevas y te sientas agusto con mis artículos. ¡Gracias!

¡Gracias por suscribirte!

Pin It on Pinterest

Share This

Compártelo

¡Comparte este artículo con tus amigos!