- Estoy ejecutando una aplicación de servidor usando JVM
sunjava-1.6.0_21
. - Mi aplicación tiene datos pesados y actúa como un servidor de caché. Por lo tanto, almacena una gran cantidad de datos de larga duración que no esperamos obtener GC durante la ejecución de la aplicación.
- Estoy configurando los siguientes parámetros de JVM
-Xmx16384M
y-Xms16384M
. - Después de que los datos requeridos se ha cargado, siguiente es el uso de la memoria de la solicitud
- espacio total montón es:
13969522688
- espacio máximo de almacenamiento dinámico es:
15271002112
- espacio de almacenamiento dinámico libre es:
3031718040
- a largo plazo (antigua generación) almacenamiento de almacenamiento dinámico:
Used=10426MB Max=10922MB Used/Max=95%
Uso de la antigua generación - He confirmado que se debe a datos reales y no se espera que obtenga gratis . Mi pregunta es que, de forma predeterminada, el tamaño JVM del espacio de montón (está asignando 10922 MB de la antigua generación), lo que deja muy poco espacio libre en la sección de la antigua generación.Tamaño apropiado de heap y antigua generación para JVM para aplicaciones pesadas de datos
- ¿Puede tener menos espacio libre en la generación anterior y afectar la aplicación?
- En caso afirmativo, ¿cómo debo manejar esto? Debo experimentar con los parámetros de ajuste de JVM como
newratio
y tratar de aumentar el espacio disponible para la generación anterior o de cualquier otra forma que deba ajustar la aplicación.
¿Es este un servidor virtual o físico? – Anders
es un servidor virtual – ManojGumber
Entonces este enlace le servirá bien - http://www.vmware.com/files/pdf/techpaper/Enterprise-Java-Applications-on-VMware-Best-Practices-Guide.pdf – Anders