2010-07-30 18 views
30

Estoy viendo las opciones de configuración de JVM para ejecutar Alfresco, principalmente el documento this en el Alfresco Wiki. Una de las recomendaciones es utilizar los indicadores de JVM -Xcomp y -Xbatch. La justificación de esto es:Java VM tuning - Xbatch y -Xcomp

Si desea que Hotspot precompile las clases, puede agregar [-Xcomp y -Xbatch]. Sin embargo, esto aumentará significativamente el tiempo de inicio del servidor, pero resaltará las dependencias faltantes que pueden ser afectadas más tarde.

De lo que tengo read elsewhere sobre las banderas -Xcomp y -Xbatch, me pregunto si realmente proporcionan ningún beneficio.

  • -Xcomp obtiene HotSpot para compilar todo el código de antemano con la máxima optimización, renunciando así cualquier perfiles que la máquina virtual obtendrá a través de la ejecución estándar del sistema.
  • -Xbatch detiene la compilación en segundo plano, es decir, el hilo que provocó que el código se compilara bloques hasta que se complete la compilación. Sin embargo, una vez finalizada la compilación, el subproceso previamente bloqueado no ejecutará el código compilado, it will still run the interpreted code. Esto fue un cambio en Java 6 (Mustang): antes de Mustang, los subprocesos bloqueados para compilar por la presencia del indicador -Xbatch se garantizaban para ejecutarse en el código compilado tan pronto como se completaba la compilación. Por lo tanto, supongo que la recomendación del indicador -Xbatch es una reliquia de ejecutar Alfresco en máquinas virtuales más antiguas.

¿Alguien tiene alguna idea? Mi inclinación es deshacerme de estas dos banderas y confiar en la VM para hacer las cosas bien.

Me gustaría agregar dos cosas, en primer lugar, que aún no tengo acceso a una instancia de Alfresco para probar esto y en segundo lugar, realmente no sé qué especificaciones de la máquina hospeda Alfresco aparte de eso por mirando las otras opciones de configuración, debe ser una VM de 64 bits. A pesar de esto, espero que la comunidad tenga algún aporte útil, quizás desde un punto de vista general de ajuste de HotSpot.

+0

La sección de ejemplo del mundo real en la página de Alfresco es agosto de 2009 y parece ser JDK 1.6? – shinynewbike

+0

@ktaylorjohn Sí, eso es correcto, pero me pregunto si las banderas -Xbatch y -Xcomp están haciendo alguna diferencia. Alfresco parece ser el único proyecto que menciona estas banderas fuera del ámbito de las pruebas de JVM y similares. – Rich

Respuesta

21

En general, siempre es preferible dejar que el compilador HotSpot sintonice por sí mismo. Incluso el uso de Server VM (-server) es el predeterminado para 64bits y algunas máquinas 'server-class'.

-Xbatch fue pensado principalmente para la depuración como se describe en Steve Goldman's blog usted ha señalado:

Así que el interruptor -Xbatch no es un interruptor particularmente útil incluso en los días pre-Mustang. Es algo útil para los desarrolladores de jvm, ya que tiende a hacer que la ejecución sea más predecible y reproducible.

-Xcomp elimina la capacidad de recopilar información para una compilación eficiente. De un Alex Turner's post:

Uno podría pensar que -Xcomp sería una buena idea desde el punto de vista del rendimiento. Sin embargo, no lo es! El compilador JIT usa esas 1000 iteraciones antes de la compilación para recopilar información sobre cómo se debe compilar el método para una eficiencia óptima. -Xcomp elimina su capacidad para hacerlo y, por lo tanto, podemos ver el deslizamiento de rendimiento.

Sin el rendimiento en mente, nunca he visto el uso de esas banderas para detectar dependencias faltantes (and it may not work if some code is still interpreted) para mi humilde opinión, me gustaría deshacerse de ambos.

+0

enlace está muerto por cierto – Eugene

0

Alfresco es una gestión de contenido empresarial. No estoy seguro de cómo las banderas afectan su rendimiento. Luego, una nota en la misma página dice ...

- Esto, sin embargo, aumentará significativamente el tiempo de inicio del servidor, pero resaltará las dependencias faltantes que pueden activarse más tarde. ...

En mi humilde opinión, el autor realmente no significaba una ganancia de rendimiento. Él/ella lo escribió como medio para verificar que todas las dependencias estén en su lugar.