Ejercicio 1.3: Análisis de posibles fugas

Antes de empezar, complete el Ejercicio 1.2: Captura de vuelcos de almacenamiento dinámico.

En este ejercicio generará, en primer lugar, una lista de objetos (como, por ejemplo, matrices, vectores y sesiones) que parece que se están fugando. Se denominan "posibles fugas". A continuación, analizará la lista para identificar dichas fugas.

Generación de una lista de posibles fugas

Para generar la lista:

  1. Siga las instrucciones de la vista Posibles fugas, pulse el botón de la barra de herramientas Analizar para detectar fugas. Se abre el recuadro de diálogo Seleccionar las opciones de Análisis de fugas.
  2. En el recuadro de diálogo, compruebe que los recuadros de los vuelcos de almacenamiento dinámico aparezcan marcados.
    Nota: Por omisión, el valor de la opción Umbral es 20. Esto significa que sólo se visualizan las posibles fugas que tengan un valor de Probabilidad de 20 o mayor. (Más adelante, en este mismo ejercicio, se proporciona más información sobre los valores de Probabilidad.)
  3. Pulse Aceptar para generar la lista. En el indicador que aparece en el ángulo inferior izquierdo de Software Development Platform se informa de que se están buscando posibles fugas.

Una visión general de la vista Posibles fugas

Cuando se haya completado el proceso, en la vista Posibles fugas se mostrará una lista de las posibles fugas.

Cada posible fuga tiene un valor de Probabilidad que oscila entre 100 y 1; la fuga que tiene la probabilidad mayor tiene un valor de 100. Las demás posibles fugas se valoran consecuentemente, y se listan por orden de probabilidad descendente. (El algoritmo de comparación de almacenamiento dinámico calcula los valores de probabilidad en función del tamaño de la fuga y su crecimiento durante el intervalo que existe entre los dos vuelcos de almacenamiento dinámico.)

El valor Umbral se ha establecido en 20 para esta ejecución de perfilado; no se mostrará ninguna fuga posible que tenga un valor de Probabilidad de 19 o menor.

En la vista se proporcionan los datos siguientes para cada posible fuga:

Análisis e identificación de la fuga

Para identificar la fuga:

  1. En la vista Posibles fugas, busque los datos de la posible fuga que tenga una probabilidad de 100:
  2. Efectúe una doble pulsación en la posible fuga. Se abre la vista Gráfico de referencia a objetos, en la que se visualizan los datos gráficos de la posible fuga. (Tenga en cuenta que es posible que la visualización del vuelco de almacenamiento dinámico tarde algún tiempo en aparecer.)
  3. Examine el gráfico de referencia a objetos. Observe lo siguiente:
  4. Coloque el cursor sobre la trayectoria que conecte la matriz Object y String, y lea la información sobre herramientas que se visualiza; se muestra un "Recuento" igual al número de fugas mostradas en la vista Posibles fugas; se trata de la recopilación de cadenas de caracteres que se ha identificado como la fuga que se ha producido.
  5. En el gráfico de referencia a objetos, efectúe una doble pulsación en el objeto String. Se abre la vista Detalles del objeto. En ella se visualizan todos los detalles del objeto String, incluidos todos los objetos que hacen referencia al mismo, y todos los objetos a los que él, a su vez, hace referencia. Tenga en cuenta que, en la vista Detalles del objeto, puede subir niveles hasta llegar a los referentes pulsando uno de ellos, o puede bajar niveles hasta llegar a los referenciados (objetos a los que el objeto hacer referencia), pulsando uno de ellos.

¿Qué ha averiguado? Ahora sabe que la cola secundaria es el objeto de fuga, y que se está fugando porque un objeto Vector retiene las referencias a muchos objetos String.

Ahora ya está preparado para comenzar el Ejercicio 1.4: Arreglo de fugas de memoria.

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.