Guía de aprendizaje: analizar los datos de perfilado de un proceso Java

Objetivos

Esta guía enseña a analizar los datos recogidos al perfilar un proceso Java, mediante las vistas de perfilado y anotación de la perspectiva Perfilado y anotaciones, llevando a cabo los siguientes procedimientos:

Tiempo necesario

1 hora

Antes de empezar

Antes de dar comienzo a esta guía de aprendizaje, tendrá que:

  1. Instalar la plataforma Eclipse, incluidas las herramientas de Hyades.
  2. Tener el archivo de perfilado de ejemplo (hcframe.jar) listo para importación. El archivo debe estar en el siguiente directorio:
    dir_instalación_Hyades\eclipse\plugins\org.eclipse.hyades.collection.framework_3.3.0

Descripción

En esta guía de aprendizaje, utilizará las distintas vistas de perfilado y anotación para analizar el ejemplo PerformanceExample.class. El ejemplo abre un marco en el que figuran dos botones.

Llevará a cabo las tareas siguientes:

  1. Abrir la perspectiva Perfilado y anotación en el entorno de trabajo
  2. Perfilar la clase PerformanceExample
  3. Analizar la información de perfilado

Para actualizar las vistas mientras se esté supervisando la aplicación, pulse el botón Renovar vistas Un botón con un icono estilizado.

Abrir la perspectiva Perfilado y anotación en el entorno de trabajo

Desde el menú Ventana, pulse Abrir perspectiva > Otro > Perfilado y registro.

Perfilar la clase PerformanceExample

Para perfilar la clase PerformanceExample, siga estos pasos:

  1. Pulse en el menú desplegable Perfil  a button with stylized icon y seleccione Perfil. Se abre el diálogo Lanzar perfil.
  2. Efectúe una doble pulsación sobre Aplicación Java externa para crear una configuración nueva.
  3. Pase a la pestaña Principal.
  4. Teclee org.eclipse.hyades.test.collection.framework.PerformanceExample en el campo Nombre de clase.
  5. Pulse Añadir Jar para añadir el jar que contiene esta clase.
  6. Seleccione dir_instalación_Hyades\eclipse\plugins\org.eclipse.hyades.collection.framework_3.3.0\hcframe.jar
  7. Pulse Abrir. Se añade el jar.
  8. Pulse la pestaña Perfilado. Puede especificar los criterios de perfilado en esta pestaña.
  9. Pulse la pestaña Visión general. Puede especificar los conjuntos de filtros y el contenido en esta pestaña.
  10. Pulse el botón Añadir para crear un conjunto de perfilado nuevo. Se abre el asistente para Añadir conjunto de perfilado.
  11. En la página Conjunto de perfilado, especifique el nombre de este conjunto de perfilado y pulse Siguiente.
  12. En la página Tipo de perfilado, expanda el nodo denominado Análisis de memoria, seleccione Análisis de memoria básico y marque el recuadro de selección que hay junto al mismo. De esta forma se añadirá información relacionada a la lista de tipos de información que debe recogerse de la aplicación.
  13. Expanda el nodo llamado Análisis del tiempo, seleccione Análisis de tiempo de ejecución y marque el recuadro de selección situado a su lado. Con esta opción seleccionada puede utilizar las vistas estadísticas para analizar la información relacionada con el tiempo. Debe recoger detalles gráficos de la ejecución para poder utilizar las vistas Flujo de ejecución e Invocación de método. Puesto que el objetivo de este ejemplo es guiarle a través de todas las vistas de perfilado, incluidas las vistas Flujo de ejecución e Invocación de método, seleccione Mostrar detalles gráficos del flujo de ejecución. Pulse también el recuadro de selección Recoger clases limítrofes excluidas por el conjunto de perfilado y establezca para Profundidad de clases limítrofes el valor 1. Pulse Siguiente.
  14. La página Conjunto de filtros proporciona la posibilidad de especificar el subconjunto de información que desea analizar. Esto es útil si no desea tener en cuenta las clases o los paquetes que no estén dentro de los límites que desee analizar.
    Bajo Contenido del conjunto de filtros seleccionado, pulse Añadir para añadir las clases o paquetes para los que desea recoger datos. Se abre el diálogo Añadir filtro.
  15. Para perfilar este paquete, teclee org.eclipse.hyades.test.collection.framework.* como Clase.
  16. Especifique como Nombre de método el valor * para incluir únicamente los métodos relacionados con este ejemplo.
  17. Pulse Aceptar. El criterio de filtro se añade a lista de contenido.
  18. Para excluir otras clases existentes de esta lista de contenido de filtro, pulse Incluir en la columna Regla para la clase y cámbiela por Excluir.
  19. Pulse Finalizar. Se ha añadido un conjunto de perfilado nuevo a la lista de conjuntos de perfilado disponibles y está resaltado como el conjunto de perfilado a utilizar.
  20. Pulse la pestaña Límites. Esta pestaña controla la cantidad de datos que se recogen ya sea basándose en el tiempo transcurrido o en el número de invocaciones de método. Acepte los valores por omisión.
  21. Pulse la pestaña Destino. ProfileProject y DefaultMonitor son los recursos de perfilado por omisión, que se pueden usar para almacenar los datos de esta sesión de perfilado.
  22. Pulse Perfilar.
  23. Se crean los recursos de perfilado necesarios, y el agente y el proceso aparecen en la vista Supervisor de perfilado.  
  24. Habilite la visualización de Supervisores seleccionado Diseño distribuido tal como se muestra en la siguiente captura de pantalla. Esto le permite ver el supervisor que agrupa los datos y la máquina en la que está ejecutando el entorno de trabajo.

    Supervisor de perfilado que muestra la jerarquía de recursos y el menú desplegable para comprobar los recursos para que estén ocultos

Analizar la información de perfilado

Ver el comportamiento de la ejecución a lo largo del tiempo

Puede examinar la ejecución de la aplicación utilizando la vista Flujo de ejecución. Esta vista representa la ejecución de todo el programa. El tiempo está representado en el eje vertical.

  1. En la vista Supervisor de perfilado, seleccione el supervisor, pulse con el botón derecho del ratón y seleccione Abrir con > Flujo de ejecución para abrir la vista Flujo de ejecución. Se abre la vista Flujo de ejecución.
  2. Para examinar un método determinado, pulse un nombre de método (o el espacio en blanco situado debajo del método) para seleccionarlo. Todos los métodos llamados por él quedan resaltados en amarillo. La longitud vertical del área resaltada ofrece una indicación del tiempo base del método. El valor exacto del tiempo base se visualiza en la línea de estado.

    Execution Flow view with two methods

    Si mueve el cursor sobre cualquier objeto verá información detallada en la barra de estado que hay en la parte inferior de la ventana.

  3. Utilice la herramienta Acercar Un botón con un icono estilizado para habilitar el cursor y a continuación pose el cursor y pulse para agrandar el área.  

Nota: para actualizar las vistas mientras la aplicación se está supervisando, pulse el botón Renovar vistas Un botón con un icono estilizado .

Identificar las hebras activas

En la vista Flujo de ejecución, cada hebra contiene periodos de actividad, identificados mediante una abundancia de llamadas de método. En la representación simbólica, el primer método llamado es una banda, y los métodos llamados ulteriormente por él se visualizan como otras tantas bandas situadas hacia la derecha. La secuencia de llamadas avanza de izquierda a derecha; las partes activas de la hebra se identifican precisamente por este avance de izquierda a derecha.

Cuando selecciona toda una sección que rodea la secuencia de llamadas de método, el tiempo base invertido al ejecutar esa secuencia se visualiza en la línea de estado. Para ver el tiempo base durante el que está activa la hebra, calcule la diferencia entre estos dos tiempos:

  1. Ponga el puntero en la línea horizontal superior del área seleccionada en amarillo para visualizar el correspondiente tiempo base en la línea de estado.
  2. Asimismo, ponga el puntero en el borde inferior del área seleccionada en amarillo (que cubre el periodo de ejecución en el que la secuencia de métodos está en acción) y tome nota del tiempo base en ese punto.

Consejos

Identificar los métodos a los que se llama con frecuencia

Para identificar los métodos a los que se llama con frecuencia:

  1. Utilice la herramienta de zoom Botón con un icono estilizado para agrandar una secuencia de llamadas de método.
  2. Busque las bandas del mismo color en el área seleccionada. Las bandas identifican los métodos de la misma instancia de clase a los que se ha llamado múltiples veces.
  3. Compruebe la longitud de las bandas de distinto color (cada una de las cuales representa un método). La longitud de la banda es directamente proporcional al tiempo de ejecución del método en cuestión.

Detectar la recogida de basura

Por lo general, es imposible saber si se ha producido la recogida de basura en un objeto tan solo con inspeccionar las bandas de una hebra de usuario en esta vista.

Siga estos pasos:

  1. Por omisión, la hebra de recogida de basura está oculta. Puede habilitarla seleccionando Hebras > GC bajo el menú Contexto correspondiente a la vista.
  2. Fíjese en la columna situada más a la izquierda en esta vista. Esta columna está reservada para la hebra de la recogida de basura, por lo que recibe el nombre de columna de la hebra GC (siglas en inglés de recogida de basura).
  3. Vea si en la columna de la hebra GC hay un rectángulo delgado. El rectángulo estará probablemente situado en la parte inferior de la mayoría de las llamadas de método en el objeto. Este rectángulo aparece en la columna de la hebra GC siempre que se haya producido la recogida de basura en un objeto.

Identificar fases de ejecución de un programa

Identificar la fase de inicialización

  1. Utilice la herramienta de zoom para acercar Botón con un icono estilizado con el fin de agrandar la secuencia de llamadas de método situada en la parte superior de la hebra principal.
  2. Observe los métodos que tienen la marca -init-.
  3. Pulse uno de esos métodos para seleccionarlo. La barra de estado se actualiza para indicar que el método sirve de ayuda en el proceso de inicialización (asignando valores a las variables que se emplean en la aplicación).

Analizar los métodos mediante la vista Invocación de método

  1. En la vista Supervisor de perfilado, seleccione un supervisor o un agente. Pulse el botón derecho del ratón y seleccione Abrir con > Flujo de ejecución. Aparece la vista Flujo de ejecución.
  2. En la tabla Flujo de ejecución, expanda la hebra que desea examinar. Seleccione el método que desea estudiar, pulse el botón derecho del ratón y seleccione Mostrar invocación de método.
  3. Utilice la herramienta de zoom para acercar Botón con un icono estilizado con el fin de agrandar una sección de la pantalla. Las bandas están coloreadas por clases y conectadas mediante líneas horizontales que representan las llamadas de método. 
  4. Seleccione un método pulsando su nombre.  
  5. Pulse el botón Renovar vistas Un botón con un icono estilizado para asegurarse de que está viendo la información actual.
  6. Observe la línea:
    línea de estado que visualiza el nombre del método y los números 1/1

    Esta línea visualiza el nombre del método, seguido de una fracción n/m, donde n representa la invocación visualizada actualmente y m indica el número total de invocaciones.
  7. Pulse Anterior  a button with stylized icon y Siguiente  a button with stylized icon para examinar todas las invocaciones del método seleccionado (o cada mensaje enviado al objeto seleccionado). La fracción de la barra de herramientas va cambiando para indicar qué invocación se está viendo.

Localizar el llamador de un método

Para localizar qué elemento está llamando a un método, siga estos pasos, todavía en la vista Invocación de método:

  1. Para ver el llamador del método, pulse el botón Mostrar llamador  a button with stylized icon. El método se visualiza junto con el llamador, situado a su izquierda.
  2. Si desea ver más detalles acerca del llamador del método para cada nueva invocación que vea, sitúe el cursor sobre la banda que representa el llamador en la vista. La línea de estado facilita información sobre el llamador.
  3. Para ver el método al que llama un método seleccionado, pulse el botón Mostrar método llamado  a button with stylized icon