Detección de pérdida de memoria ligera
En este tema se describen las pérdidas de memoria en las aplicaciones Java™ y se introduce la detección de pérdida de memoria ligera.
Aunque una aplicación Java tiene incorporado un mecanismo de recogida de basura que exime al programador de toda responsabilidad de desasignación explícita de objetos, las pérdidas de memoria continúan siendo comunes en las aplicaciones Java. Las pérdidas de memoria se producen en las aplicaciones Java cuando se hacen referencias no intencionadas a objetos no utilizados. Esto impide que la recogida de basura de Java pueda liberar memoria.
El término pérdida de memoria se utiliza demasiado; una pérdida de memoria hace referencia a un uso o una gestión incorrectos de la memoria. Las estructuras de datos antiguas no utilizadas pueden tener referencias excelentes pero que nunca se hay recogido la basura. Una estructura de datos puede tener un crecimiento sin límites o puede que no haya suficiente memoria asignada para ejecutar un conjunto de aplicaciones de forma eficaz.
La mayoría de tecnologías existentes de pérdida de memoria se basan en la idea de que sabe que tiene una pérdida de memoria y desea encontrarla. Debido a estos requisitos de análisis, estas tecnologías tienen cargas de rendimiento importantes y no están diseñadas para utilizarlas como mecanismo de detección en entornos de producción. Esta limitación se traduce en que las pérdidas de memoria no se suelen detectar hasta que el problema es muy grave; la aplicación pasa todas las pruebas del sistema, se lleva a producción, pero no funciona y nadie sabe por qué.
WebSphere Application Server ha implementado un mecanismo de detección de pérdida de memoria ligera que se ejecuta en la infraestructura de WebSphere Asesor de rendimiento y diagnóstico. Este mecanismo está diseñado para proporcionar una detección anticipada de problemas de memoria en entornos de prueba y producción. Esta infraestructura no está diseñada para facilitar el análisis del origen del problema, sino que proporciona notificación y ayuda para generar la información necesaria para utilizar las herramientas de análisis. El mecanismo sólo detecta pérdidas de memoria en el almacenamiento dinámico Java y no detecta pérdidas nativas.
La detección de pérdida de memoria ligera en WebSphere Application Server no necesita agentes adicionales. La detección utiliza algoritmos basados en la información que está disponible en el servicio de Infraestructura de supervisión del rendimiento y tiene una carga de rendimiento adicional mínima.