2012-03-09 8 views
8

Suponiendo una JVM de 64 bits, ¿hay algún beneficio significativo para mantener el tamaño de MaxPermSize pequeño?¿Hay algún beneficio para mantener el tamaño de MaxPermSize pequeño?

Esto es en el contexto de una aplicación Java EE que se redistribuye con frecuencia y tiene una pérdida de cargador de clases. Como una solución temporal a mediano plazo, parece muy razonable aumentar el valor de MaxPermSize a un valor absurdo, siempre que no elimine el espacio de intercambio de disco.

Debido a que el código de la aplicación no desplegada casi no se utiliza (aparte de lo relacionado con la fuga), el sistema operativo lo pagina. Entonces la carga en la memoria física de detritus no desplegada parece insignificante; esto ha sido verificado mediante la observación de RSS (el tamaño del conjunto de trabajo en Unix).

¿Hay otros efectos que me preocupen?

Respuesta

6

De JVM HotSpot FAQ

¿Debo aumentar el tamaño de la generación permanente en la máquina virtual cliente?

Esto siempre será una llamada de juicio. En general, aumentar el tamaño de una generación (y esto se aplica no solo a la generación permanente) puede reducir la incidencia de una amplia variedad de problemas. Sin embargo, esto puede causar que otros procesos extraigan excesivamente la página y/o la basura o eliminen excepciones de memoria.

Hay dos modos de falla a considerar.

Al aumentar MaxPermSize, es posible que los programas que anteriormente se portaban bien y que solían recolectar basura para recuperar el espacio de generación permanente se mueran por una interminable paginación. Para la generación permanente, esto generalmente solo ocurre con el interino pesado de cadenas temporales.

El otro modo de falla es que el espacio de direcciones debe reservarse para la generación permanente y esto reducirá el disponible para el resto del montón (el máximo -Xmx puede ser demasiado grande). Esto hará que los programas configurados para usar todo el espacio disponible fallen en la inicialización.

también this article dice:

Así que tomamos ventaja del hecho de que las clases se mantienen en la generación permanente mediante la recopilación de la generación permanente antes de recoger la generación titular. Y la generación permanente se recopila actualmente en serie.

La generación permanente grande puede causar un tiempo más prolongado de GC, creo.

+0

Sí, GC es preocupante. Me temo que todo el deadwood debe ser localizado. ¡Gracias! –

Cuestiones relacionadas