Identificar las fugas de memoria

Prerrequisitos:

Las fugas de memoria son errores que se producen en la lógica de asignación dinámica de almacenamiento de un programa y que impiden al programa reclamar la memoria descartada. Es decir, no se reclaman los objetos que han dejado de necesitarse. Se supone que hay una fuga de memoria cuando se produce un número inesperadamente elevado de tales incidencias. Una fuga de memoria, si es grave, puede provocar el colapso de su aplicación debido a que se ha agotado la memoria.

Las fugas de memoria se deben a objetos que siguen reteniendo referencias a otros objetos, impidiendo así que la recogida de basura pueda reclamar los objetos retenidos.La tabla de referencias de objetos puede servir de ayuda para identificar este tipo de referencias. 

Buscar una fuga de memoria en una aplicación

Para identificar una fuga de memoria en la aplicación, siga estos pasos:

  1. En la perspectiva Perfilado y anotaciones, seleccione el supervisor o el agente en la vista Supervisor de perfilado. 
  2. Pulse con el botón derecho el Supervisor o el Agente y seleccione Recopilar referencias de objeto. Las referencias de objeto se recogerán.
  3. Pulse otra vez con el botón derecho y seleccione Abrir con > Referencia de objeto. Se abre la tabla de referencias de objeto. 
  4. Seleccione el icono del menú local Un botón con un icono triangular y seleccione Mostrar referencia a.
  5. Examine la lista de objetos y el número de referencias que se hacen a ellos. Los que tienen referencias representan un problema potencial de fuga de memoria. 

Localizar una fuga de memoria en una operación orientada a transacciones

Este procedimiento pretende ayudarle a identificar una fase del programa en la que se crean objetos nuevos, pero no se liberan, impidiendo así que la recogida de basura pueda eliminarlos. Por ejemplo, su programa crea una ventana de diálogo, pero los objetos relacionados con el diálogo siguen estando retenidos después de que la ventana se haya cerrado. Para identificar una fuga de memoria en una operación orientada a transacción, siga estos pasos:

  1. En la perspectiva Perfilado y anotaciones, seleccione el supervisor o el agente en la vista Supervisor de perfilado. 
  2. Recoja referencias de objeto antes de la operación en cuestión. Pulse con el botón derecho y seleccione Recoger referencias de objeto. Las referencias de objeto se recogerán.
  3. Pulse con el botón derecho sobre el supervisor y seleccione Abrir con > Referencia de objeto. Examine la tabla Referencias de objeto y tenga en cuenta las referencias de objeto que se han creado.
  4. Ejecute la operación que desea examinar.
  5. Recoja referencias de objeto después de completar la operación. Pulse con el botón derecho y seleccione Recoger referencias de objeto.
  6. Pulse con el botón derecho sobre el supervisor y seleccione Abrir con > Referencia de objeto. Examine la tabla Referencias de objeto y tenga en cuenta las referencias de objeto que se han creado.
  7. Para examinar una referencia de objeto determinada, siga estos pasos:
    1. En el menú desplegable de la tabla Referencias de objeto, seleccione Mostrar referencia por.
    2. Seleccione la clase de su objeto y expanda el elemento.
    3. Identifique las referencias que impiden reclamar los nuevos objetos.

 

Conceptos relacionados
Visión general de la herramienta de perfilado
Recursos de perfilado
Tabla Referencias de objeto

Tareas relacionadas
Perfilar una aplicación
Lanzar o conectar un proceso Java