En programación , la memoria inaccesible es un bloque de memoria asignada dinámicamente donde el programa que la asignó ya no tiene ningún puntero accesible que haga referencia a ella. De manera similar, un objeto inaccesible es un objeto asignado dinámicamente que no tiene ninguna referencia accesible . En términos informales, la memoria inaccesible es memoria dinámica a la que el programa no puede acceder directamente, ni tampoco puede acceder a ella partiendo de un objeto al que sí puede acceder directamente y siguiendo una cadena de referencias de puntero.
En las implementaciones de asignación dinámica de memoria que emplean un recolector de basura , los objetos se recuperan una vez que dejan de ser accesibles. El recolector de basura puede determinar si un objeto es accesible; cualquier objeto que ya no sea accesible puede ser liberado . Muchos lenguajes de programación (por ejemplo, Java , C# , D , Dylan , Julia ) utilizan la recolección automática de basura.
Por el contrario, cuando la memoria se vuelve inaccesible en implementaciones de asignación dinámica de memoria que requieren una desasignación explícita, la memoria ya no se puede desasignar explícitamente. La memoria inaccesible en sistemas que utilizan gestión manual de memoria produce una fuga de memoria .
Algunos recolectores de basura implementan referencias débiles . Si un objeto es accesible solo a través de referencias débiles o cadenas de referencias que incluyen una referencia débil, entonces se dice que el objeto esdébilmente alcanzable . El recolector de basura puede tratar ungrafo de objetoscomo inalcanzable y desasignarlo. (Por el contrario, las referencias que impiden que un objeto sea recolectado por el recolector de basura se denominanreferencias fuertesorientados a objetoscon recolección de basura, comoJavayPython, presentan referencias débiles. Elpaquete Javajava.lang.refadmite referencias suaves, débiles y fantasma, lo que da como resultado los estados de alcanzabilidad de objetos adicionalessuavemente alcanzableyfantasma alcanzable.
La memoria inaccesible (en lenguajes como C, que no recuperan memoria) suele estar asociada al envejecimiento del software .
Enlaces externos
- Nicholas, Ethan (4 de mayo de 2006). "Entendiendo las referencias débiles" . java.net. Archivado del original el 19 de agosto de 2010. Recuperado el 1 de octubre de 2010 .
- Gestión automática de la memoria