Una pérdida de memoria es un uso de memoria deseado mediante un programa informático , donde el programa asigna memoria para el uso y no puede cancelar la asignación de una vez que la memoria ya no está en uso. Este trozo de memoria ya no estará disponible para el programa de ordenador . Un programa que se fuga de memoria suficiente durante el tiempo suficiente puede hacer que el sistema se quede sin memoria disponible, que puede hacer que el programa o sistema informático a fallar. Las pérdidas de memoria también pueden hacer que un sistema para frenar a una velocidad satisfactoria, debido a la paliza memoria. Los programas que se ejecutan durante largos períodos de tiempo, realizan muchas asignaciones o asignar memoria en grandes trozos puede ser especialmente propensos a las fugas de memoria peligrosas.
Utilizar buenas prácticas de codificación
mejor manera de asegurarse de que su programa no tiene una fuga de memoria es escribir buen código que maneja adecuadamente los recursos del sistema . Asegúrese de que por cada llamada a la función que se asigna memoria , hay una llamada correspondiente que cancela la asignación de memoria. Algunos lenguajes como Java, C # y VB.NET, proporcionan la recolección de basura , donde el sistema comprueba periódicamente que la memoria asignada se encuentra todavía en uso. Si bien estos sistemas no impiden pérdidas de memoria completamente , es menos probable que se produzca. Otros lenguajes, como C + +, se puede asignar ninguna pila, donde una parte de la memoria se cancela automáticamente una vez que la variable que hace referencia a que sale del ámbito . Al utilizar el lenguaje correcto para la tarea y mantener buenas prácticas de escritura de software , muchas pérdidas de memoria se pueden evitar por completo.
Crear un gestor de
memoria Algunas ordenador programas 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 factible . En estos casos, puede tener sentido para escribir un componente de administrador de memoria para el programa. El software entonces tendría una interfaz uniforme para la asignación de los fragmentos de memoria , y el director realiza un seguimiento de dónde y cómo se asignan estos trozos . En su forma más simple , el gerente simplemente proporciona información , lo que permite al programador para ver cuánto se utilice la memoria y los componentes que lo están utilizando . También puede proporcionar la recolección de basura y el control de cómo se asigna y se cancela la asignación de memoria , dando un programador sólo un lugar para buscar fugas 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 o en el "top " en Unix /Linux para determinar si es que se filtró la 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 simple que pone a prueba los diversos componentes de una pieza de software para determinar si la memoria está filtrando . El programa de pruebas se puede determinar de forma dinámica o se le dará conocimiento previo de la cantidad de memoria se debe utilizar un programa de ordenador. 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 la forma en que sucedió , lo que permite al programador para arreglar la fuga.
De software de terceros
Los programadores pueden utilizar muchas tercio bandas programas y librerías para comprobar si su software está perdiendo la memoria. En el . NET Framework Microsoft , se puede permitir a prueba de fugas 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 Asegure + + 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 para depurar , tales 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.