Diferencia entre revisiones de «Fuga de memoria»
Sin resumen de edición |
m robot Añadido: cs:Únik paměti |
||
Línea 1: | Línea 1: | ||
[[Error de software]] que ocurre cuando un [[bloque de memoria]] reservada no es liberada en un [[software|programa]] de computación. Comúnmente ocurre porque se pierden todas las referencias a esa área de memoria antes de haberse liberado. |
[[Error de software]] que ocurre cuando un [[bloque de memoria]] reservada no es liberada en un [[software|programa]] de computación. Comúnmente ocurre porque se pierden todas las referencias a esa área de memoria antes de haberse liberado. |
||
Línea 16: | Línea 15: | ||
[[ar:تسرب الذاكرة]] |
[[ar:تسرب الذاكرة]] |
||
[[cs:Únik paměti]] |
|||
[[de:Speicherleck]] |
[[de:Speicherleck]] |
||
[[en:Memory leak]] |
[[en:Memory leak]] |
Revisión del 18:00 16 may 2009
Error de software que ocurre cuando un bloque de memoria reservada no es liberada en un programa de computación. Comúnmente ocurre porque se pierden todas las referencias a esa área de memoria antes de haberse liberado.
Dependiendo de la cantidad de memoria perdida y el tiempo que el programa siga en ejecución, este problema puede llevar al agotamiento de la memoria disponible en la computadora.
Este problema se da principalmente en aquellos lenguajes de programación en los que el manejo de memoria es manual (C o C++ principalmente), y por lo tanto es el programador el que debe saber en qué momento exacto puede liberar la memoria. Otros lenguajes utilizan un recolector de basura que automáticamente efectúa esta liberación. Sin embargo todavía es posible la existencia de fugas en estos lenguajes si el programa acumula referencias a objetos, impidiendo así que el recolector llegue a considerarlos en desuso.
Existen varias formas de luchar contra este problema. Una forma es el uso de un recolector de basura incluso en el caso en el que éste no sea parte estándar del lenguaje. El más conocido recolector de basura usado de esta manera es el Boehm-Demers-Weiser conservative garbage collector. Otras técnicas utilizadas son la adopción de esquemas de conteo de referencias o el uso de pools de memoria (técnica menos popular, utilizada en el servidor Apache y en el sistema de versiones Subversion).
También hay herramientas para "auscultar" un programa y detectar las fugas. Una de las herramientas más conocidas es Valgrind.