Pregunta

Estoy usando una aplicación ICEFaces que se ejecuta en JBOSS, mi tamaño actual del montón se establece en

-Xms1024m –Xmx1024m -XX: MaxPermSize = 256m

¿Cuál es su recomendación para ajustar los parámetros de memoria para JBOSS AS 5 (5.0.1 GA) JVM 6?

¿Fue útil?

Solución

De acuerdo con este article :

  

Se sabe que AS 5 es codicioso cuando se trata de PermGen . Al comenzar, a menudo lanza OutOfMemoryException: PermGen Error .

Esto puede ser particularmente molesto durante el desarrollo cuando implementa en caliente una aplicación con frecuencia. En este caso, JBoss QA recomienda aumentar el tamaño del permgen, permitir la descarga de clases y el barrido del permgen :

-XX:PermSize=512m -XX:MaxPermSize=1024 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

Pero esto es más FYI, no estoy sugiriendo que aplique esta configuración a ciegas (como la gente escribió en los comentarios, "si no está roto, no lo arregle").

Con respecto al tamaño de su montón, siempre tenga en cuenta: cuanto más grande sea el montón, mayor será el GC principal . Ahora, cuando dices "definitivamente fue demasiado pequeño", realmente no sé qué significa esto (qué errores, síntomas, etc.). Que yo sepa, un montón de 1024 m es en realidad bastante grande para una aplicación web y debería ser más que suficiente para la mayoría de ellos. Solo ten cuidado con la mayor duración de GC.

Otros consejos

Montón: comience con 512 MB, establezca el límite en donde cree que su aplicación nunca debería llegar y no haga que su servidor comience a intercambiar.

Permgen: Generalmente es lo suficientemente estable, una vez que la aplicación lee todas las clases utilizadas en la aplicación. Si ha probado la aplicación y funciona con 256 MB, déjelo así.

@wds: definitivamente no es una buena idea establecer el máximo de almacenamiento lo más alto posible por dos razones:

  1. Los grandes montones hacen que el GC total tarde más. Si tiene habilitado el escaneo de PermGen, un gran espacio de PermGen también llevará más tiempo para GC.
  2. JBoss AS en Linux puede dejar los controles de E / S sin usar lo suficientemente abiertos para que Linux los limpie por la fuerza, bloqueando todos los procesos en la máquina hasta que se complete (¡puede llevar más de 1 minuto!). Si olvida apagar el escáner de implementación en caliente, esto ocurrirá con mucha más frecuencia.

Esto sucedería tal vez una vez a la semana en mi solicitud hasta que yo:

  1. disminuyó -Xms a un punto en el que el inicio de JBoss AS estaba comenzando a ralentizarse
  2. disminuyó -Xmx a un punto donde los GCs completos ocurrían con más frecuencia, por lo que la limpieza del controlador de E / S de Linux se detuvo

Para los desarrolladores, creo que está bien aumentar PermGen, pero en la producción es probable que desee usar solo lo necesario para evitar largas pausas en el GC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top