2012-06-15 34 views
7

A veces escuché gente discutiendo sobre el tiempo de inicio de Java. Parece que este es un aspecto de rendimiento importante. Pero, ¿qué es realmente?¿De qué se compone el tiempo de inicio en la máquina virtual Java?

  • ¿De qué se compone?
    1. ¿Tiempo de carga de clase causado por la carga dinámica de clase?
    2. ¿O sobrecarga de compilación por primera vez en compilación solo de JVM?
    3. ¿O algo más que causa la "lentitud" durante el período inicial de la ejecución de un programa Java?

A continuación, la segunda pregunta es

  • la forma de medir el tiempo de puesta en marcha de los programas de Java? ¿De qué punto a qué punto es la duración llamada tiempo de puesta en marcha?

No sé si mi pregunta se hace de la manera correcta; Si no es así, por favor hágamelo saber. ¡Gracias!

+0

Siempre he escuchado este término referido t o de manera informal, y tengo mucha curiosidad de ver si alguien ha establecido una definición formal para ello. – templatetypedef

Respuesta

1

El tiempo de inicio no está formalmente definido. De hecho, la mayoría de los términos utilizados en TI práctica no están formalmente definidos. (O las definiciones formales se ignoran).

Pero, en términos generales, es el tiempo desde el inicio de la aplicación hasta cuando está listo para hacer algo útil. Lo que sucede durante el inicio depende de la aplicación, pero incluye carga de clase estática, inicialización de clase estática y (posiblemente) compilación JIT de algunas de las clases. Otras cosas pueden incluir el inicio de las IU, la conexión a bases de datos, la carga previa de estructuras de datos específicas de la aplicación, el "cableado" de la aplicación, etc.

El problema al tratar de definir el "tiempo de inicio" formalmente es que cualquier definición es probable que no funcione para algún subconjunto significativo de tipos de aplicaciones. E incluso cuando puede definirlo, existe la complicación de que algunas de las tareas de inicio (o calentamiento) continúen ocurriendo en segundo plano después de que la aplicación se anuncie como "lista".

(esto no es un problema específico de Java en cuenta la "puesta en marcha" de un ordenador portátil;.. Es decir, lo que sucede entre la alimentación y en el escritorio de ser plenamente utilizable)

¿Cómo se mide la puesta en marcha hora de los programas de Java? ¿De qué punto a qué punto es la duración llamada tiempo de puesta en marcha?

Ambos son de usted para decidir, en función del tipo de aplicación que se está hablando, y lo que desee considerar como la fase de arranque para su aplicación.

1

Como mencionó Stephen C, no existe una definición formal general para "tiempo de puesta en marcha".

Para obtener una comprensión intuitiva de este concepto, encontré una descripción en Oracle's webs.

Básicamente, da una definición informal. "El tiempo de inicio de una aplicación es el tiempo que tarda la aplicación en arrancar y listo para comenzar a hacer lo que se supone que debe hacer. "Tanto la JVM y aplicación en sí mismo puede afectar el tiempo de puesta en marcha.

Además, proporciona algunos (tamaño de la pila de ajustar -Xms/-Xmx) idea de reducir el tiempo de puesta en marcha. Ya sea demasiado grande o tamaño demasiado pequeño montón sería ampliar el tiempo de puesta en marcha.

Además, "Diagnosing a Slow JVM Startup" muestra algunas pistas para encontrar las razones de la lenta puesta en marcha.

Nota lo anterior son todo en el contexto de JRockit JVM , pero las ideas son más generales.

Cuestiones relacionadas