Tecnología

Inicio

Prueba para la pérdida de memoria

Prueba para la pérdida de memoria


Un número de formas están disponibles para determinar si un programa de ordenador tiene una fuga de memoria. Un programador puede tamizar a través del código fuente para asegurarse de que toda la memoria asignada se ha desasignado, se puede escribir un programa que pone a prueba su software para pérdidas de memoria, se puede diseñar un esquema de gestión de memoria que le permite mantener un registro de memoria usada o él puede utilizar un programa de terceros que pone a prueba de fugas de memoria.

¿Qué es una pérdida de memoria?

Una pérdida de memoria es un uso de memoria deseado mediante un programa informático, en el que el programa asigna memoria para el uso y no puede cancelar la asignación de una vez la memoria ya no está en uso. Este trozo de memoria ya no estará disponible para el programa de ordenador. Un programa que se filtra suficiente memoria durante el tiempo suficiente puede provocar que el sistema se quede sin memoria disponible, lo que puede provocar que el sistema programa o equipo falle. Las pérdidas de memoria también pueden hacer que un sistema para reducir la velocidad a una velocidad satisfactoria, debido a la paliza de memoria. Los programas que se ejecutan durante largos períodos de tiempo, realizan muchas asignaciones o asignar memoria en grandes trozos pueden ser especialmente propensos a pérdidas de memoria peligrosas.

Utilice buenas prácticas de codificación

La mejor manera de asegurarse de que su programa no está perdiendo memoria es escribir buen código que maneja adecuadamente los recursos del sistema. Asegúrese de que para cada llamada a la función que asigna memoria, hay una llamada correspondiente que desasigna la memoria. Algunos lenguajes como Java, C #, VB.NET y, proporcionan la recogida de basura, donde el sistema comprueba periódicamente que la memoria asignada todavía está en uso. Si bien estos sistemas no impiden pérdidas de memoria completamente, es menos probable que se produzca. Otros lenguajes, como C ++, permiten asignación de pila, donde un trozo de memoria se desasigna automáticamente una vez que la variable que hace referencia a que se sale del ámbito. Al utilizar el lenguaje correcto para la tarea y el mantenimiento de buenas prácticas de escritura de software, muchas pérdidas de memoria se pueden evitar por completo.

Crear un administrador de la memoria

Algunos programas informáticos requieren tanto la ejecución de código que la lectura a través del programa para encontrar donde la memoria se ha filtrado simplemente no es viable. En estos casos, puede tener sentido para escribir un componente de administrador de memoria para el programa. El software tendría entonces una interfaz uniforme para la asignación de los fragmentos de memoria, y el gestor realiza un seguimiento de dónde y cómo se asignan estos trozos. En su forma más simple, el gerente simplemente proporciona retroalimentación, lo que permite al programador para ver la cantidad de memoria utilizada, y qué componentes están utilizando. También puede proporcionar la recolección de basura y controlar cómo se asigna y desasigna la memoria, dando un programador único lugar para buscar pérdidas de memoria, en lugar de todo el código para todo el programa.

Crear un programa de prueba

A menudo se puede ver la memoria utilizada por un programa con una herramienta del sistema, tales como el Administrador de tareas de Windows o "superior" en Unix / Linux para determinar si se filtró memoria. Esto no siempre es evidencia de una pérdida de memoria, pero puede proporcionar alguna información inicial. A veces es posible escribir un programa sencillo que pone a prueba los diversos componentes de una pieza de software para determinar si la memoria no tiene fugas. El programa de prueba puede determinar de forma dinámica o se le dará un conocimiento previo de la cantidad de memoria un programa de ordenador debe utilizar. A continuación, se asegura de que la cantidad utilizada es la cantidad que se debe utilizar. Si se produce una pérdida de memoria, el programa de prueba proporciona información sobre cómo ha ocurrido, lo que permite al programador para reparar la fuga.

Software de terceros

Los programadores pueden utilizar muchos programas de terceros y bibliotecas para comprobar si su software está perdiendo memoria. En el Microsoft .NET Framework, se puede permitir la inspección de pérdida de memoria mediante el uso de las versiones de depuración de las funciones de asignación de memoria. En Linux, Unix y Mac, puede utilizar herramientas, como Valgrind, Dmalloc y asegurar ++ para aislar una pérdida de memoria. Muchos depuradores de memoria también están disponibles para Windows. La mejor herramienta para el trabajo depende del entorno de desarrollo y el lenguaje que se utiliza, así como las características específicas del programa de depuración, como el tamaño, requisitos de velocidad y la forma en que interactúa con el sistema. Hay muchas herramientas de las cuales elegir, y pueden ser de gran ayuda para el programador frustrado cansado de buscar la última fuga difícil de alcanzar.