Ejercicio 1.2: Captura de vuelcos de almacenamiento dinámico
Antes de empezar, complete el Ejercicio 1.1: Importación de los recursos necesarios.
Caso de ejemplo
Su organización tiene un sistema de encolado de tres niveles que forma parte de una aplicación de proxy web. Cada nivel del sistema de encolado tiene su cola propia. El equipo de pruebas ha determinado que la aplicación tiene una fuga de memoria, y sospecha que está en el sistema de encolado. Como desarrollador de una de las colas, se le ha asignado la tarea de determinar qué nivel es el responsable de la fuga de memoria.
Visión general
Para efectuar el análisis de la fuga de memoria, debe capturar dos vuelcos de almacenamiento dinámico.
El almacenamiento dinámico es un bloque de memoria que la Máquina Virtual Java (JVM) utiliza, cuando se ejecuta, para almacenar los objetos Java. El recopilador de basura gestiona la memoria de almacenamiento dinámico Java; desasigna memoria automáticamente para aquellos objetos Java para los que no quedan referencias.
Un vuelco de almacenamiento dinámico es una imagen del contenido del vuelco en un momento específico.
Necesita dos vuelcos de almacenamiento dinámico para poder ver cómo cambia la utilización de la memoria entre dos puntos de la ejecución de la aplicación. Un algoritmo incorporado compara los almacenamientos dinámicos e identifica los objetos que permanecen en la memoria cuando, en realidad, no deberían permanecer en ella. El algoritmo analiza los indicadores siguientes para identificar fugas potenciales: los objetos que están en la memoria durante todo el intervalo de tiempo entre los dos vuelcos de almacenamiento dinámico, un aumento en el número de objetos de una clase determinada del segundo almacenamiento dinámico, y el número de referencias a un objeto.
Preparación de la captura de los vuelcos de almacenamiento dinámico
Para capturar vuelcos de almacenamiento dinámico, debe conmutar a la perspectiva Perfilado y registro.
- En la barra de menús de Software Development Platform, seleccione Ventana > Abrir perspectiva > Otras...; se abre el recuadro de diálogo Seleccionar perspectiva.
- En la parte inferior izquierda del recuadro de diálogo, pulse Mostrar todo. En el recuadro de selección aparece una marca.
- En la lista de perspectivas, seleccione Perfilado y registro y pulse Aceptar.
- Si se abre el recuadro de diálogo Confirmar habilitación, pulse Habilitar posibilidades siempre y no volver a preguntarme y, a continuación, pulse Aceptar.
- La aplicación Software Development Platform conmuta a la perspectiva Perfilado y registro.
Captura de vuelcos de almacenamiento dinámico
En esta guía de aprendizaje capturará los vuelcos de almacenamiento dinámico manualmente. (Como alternativa, puede establecer intervalos de tiempo para capturar vuelcos de almacenamiento dinámico automáticamente, o bien puede importar los vuelcos de almacenamiento dinámico existentes.)
Para capturar los vuelcos de almacenamiento dinámico:
- Ejecute la aplicación:
- En la barra de menús, seleccione Ejecutar > Perfil...; se abre el recuadro de diálogo Perfil.
- En la lista Configuraciones, efectúe una doble pulsación en Aplicación Java. En la lista aparece la entrada New_configuration.
- En el campo Nombre, escriba ThreeTierQueue_MemLkAnalysis.
- En la pestaña Principal, pulse la opción Examinar que aparece junto al campo Proyecto. Se abre el recuadro de diálogo Selección de proyecto.
- Seleccione ThreeTierQueue y, a continuación, pulse Aceptar.
- Pulse Buscar, que aparece junto al campo "Clase principal".
- En el recuadro de diálogo Elegir tipo principal, seleccione TestThreeTierQueue y, a continuación, pulse Aceptar.
- En el recuadro de diálogo Perfil, pulse la pestaña Perfilado.
- En la subpestaña Visión general, marque el recuadro de selección del conjunto de perfilado "Análisis de fugas de memoria - Vuelcos de almacenamiento dinámico manuales". (Un conjunto de perfilado define el tipo de datos de perfilado que deben recopilarse para la ejecución.)
- Pulse Perfil. Se ejecuta la aplicación y el aspecto de la pantalla pasa a ser el siguiente:
- En el Monitor de perfilado aparece un recurso Perfilado para el proceso.
- Se abre la vista Posibles fugas, y en ella se muestra un mensaje de estado actual que contiene instrucciones sobre qué hacer a continuación.
Nota: Si aparece un mensaje de seguridad en el que se indique que el Controlador de agente no está disponible, consulte el apartado Si no ha podido recopilar datos.
- Capture vuelcos de almacenamiento dinámico
- En la barra de menús, seleccione Ventana > Mostrar vista > Consola, para abrir la vista Consola, de forma que pueda seguir la aplicación a medida que se procese.
- Permita que la aplicación se prepare, durante al menos medio minuto, para así poder garantizar que se carguen e inicialicen todas las clases que desee perfilar.
- Siga las instrucciones de la vista Posibles fugas: pulse el botón de la barra de herramientas Capturar vuelco de almacenamiento dinámico
para capturar un vuelco de almacenamiento dinámico de línea básico, el punto de partida de la comparación de vuelcos de almacenamiento dinámico. Ahora, los recursos de perfilado adicionales aparecen en la vista Monitor de perfilado, uno para la detección automática de fugas, y otro el vuelco de almacenamiento dinámico que acaba de capturar.
- Permita que la aplicación se ejecute un minuto más y, siguiendo las instrucciones de la vista Posibles fugas, capture un segundo vuelco de almacenamiento dinámico, tal como lo ha hecho antes. En el Monitor de perfilado aparece un recurso Perfilado para el segundo vuelco de almacenamiento dinámico.
- Pulse el botón Terminar
de la vista Consola para finalizar el proceso.
Si no ha podido recopilar datos
Para poder recopilar todos los tipos de datos de perfilados, el Controlador de agente debe estar ejecutándose. Si aparece un mensaje en el que se indique que el Controlador de agente no está disponible, compruebe que esté instalado, inícielo manualmente, e inténtelo de nuevo. Para obtener instrucciones, consulte la guía de instalación. Puede acceder a la guía de instalación mediante el Launchpad, o puede encontrarla en el CD del producto, el archivo disk1/install.html.
Una vez recopilados los datos, ya está preparado para comenzar el Ejercicio 1.3: Análisis de posibles fugas.