Tecnología

Inicio

Herramientas para encontrar una pérdida de memoria

Herramientas para encontrar una pérdida de memoria


Cuando un programa de ordenador necesita para almacenar información, primero se tiene que asignar memoria. Después de que los datos ya no es necesaria, el programa desasigna la memoria para que otro programa puede hacer uso de ella. Si un programa asigna memoria sin borrar la memoria después, ese programa se convertirá en una carga para los recursos del sistema. Estos insectos son llamados "pérdidas de memoria" y deshacerse de ellos es una parte importante de la depuración.

Proceso

Independientemente de qué idioma está escrito el programa en, el proceso básico para encontrar fugas de memoria es el mismo. En primer lugar, la pérdida de memoria necesita ser detectado. Una pérdida de memoria se indica normalmente mediante linealmente creciente uso de la memoria, aunque algunas herramientas especializadas le puede decir directamente la cantidad de memoria de un programa haya asignado o desasignado. Una vez que se detecta una pérdida de memoria, debe aislarse. Esto se hace mediante la prueba de cada función u objeto separado para determinar dónde se produce la fuga. A continuación, el programador tiene que averiguar el error específico que está causando la fuga y corregirlo.

C / C ++

Los programas escritos en C y C ++ son conocidas por tener pérdidas de memoria debido a que el usuario debe asignar manualmente y liberar memoria usando el comando malloc. La herramienta ccmalloc supervisa la función malloc y los informes de lo que la memoria no se desasigna, se desasignan varias veces o incluso asignados sin haber sido desasignado en el primer lugar. Otros programas más especializados, como NJAMD ( "No es sólo otra Malloc depurador") también existen para encontrar fugas de memoria en C y C ++.

MSDN

Los desarrolladores que utilizan el entorno de desarrollo de Microsoft pueden utilizar el comando ml para encontrar fugas de memoria. Escribiendo ml en el símbolo cesh se abre una lista de cada aplicación en ejecución y la cantidad de memoria que se utiliza, escrito como "R / W =" seguido por el número de páginas que la aplicación ha asignado. aumentos inesperados en el uso de memoria indicar que la aplicación tiene una pérdida de memoria.

Java

Muchos programadores piensan que los programas Java son inmunes a las pérdidas de memoria debido a que el programador no es responsable de asignar y desasignar la memoria, pero ellos todavía surgen. Máquina virtual de Java, el entorno que implementa programas de Java, tiene un recolector de basura automático que desasigna la memoria cuando ya no se hace referencia por otras clases. Las pérdidas de memoria pueden ocurrir cuando se hace referencia a la memoria cuando ya no es necesaria, haciendo que puede ser saltado por el recolector de basura. JProbe es un depurador que puede tomar instantáneas de uso de la memoria como una aplicación Java se ejecuta, lo que ayuda a los programadores a encontrar la fuente de una pérdida de memoria.