¿Se ralentiza la JVM de Sun cuando hay más memoria disponible y se usa a través de -Xmx?¿Se ralentiza la JVM de Sun cuando se asigna más memoria a través de -Xmx?
Lo pregunto porque mis servidores de producción han de recibir una actualización de memoria: (Supuesto La máquina tiene suficiente memoria física para que el intercambio de memoria virtual no es un problema.). Me gustaría subir el valor de -Xmx a algo decadente. La idea es evitar cualquier falla de agotamiento del espacio de montón debido a mis propios errores de programación que ocurren de vez en cuando. Eventos raros, pero se podrían evitar con mi aplicación web de rápida evolución si tuviera un valor de Xmx obsceno, como 2048 mb o más. La aplicación se monitorea en gran medida, por lo que se notarían picos inusuales en el consumo de memoria JVM y se corregirían los defectos.
posibles detalles importantes:
- Java 6 (Runnign en el modo de 64 bits)
- 4-core Xeon
- RHEL4 64 bits
- Spring, Hibernate
- alta disco y red IO
EDIT: Intenté evitar publicar la configuración de mi JVM, pero claramente eso hace que la pregunta sea ridículamente abierta. Por lo tanto, aquí vamos con los parámetros de configuración relevantes:
-Xms256m
-Xmx1024m
-XX:+UseConcMarkSweepGC
-XX:+AlwaysActAsServerClassMachine
-XX:MaxGCPauseMillis=1000
-XX:MaxGCMinorPauseMillis=1000
-XX:+PrintGCTimeStamps
-XX:+HeapDumpOnOutOfMemoryError
Gracias. Como verá en mi pregunta editada, he establecido una duración máxima para la duración del GC. Aunque soy consciente de la capacidad de ajustar montones de títulos, etc., todavía no he ido allí bajo la apariencia de una "optimización prematura". Pero tal vez tiene sentido ... ¡Puedo sentir que viene otra pregunta ASÍ! –