Basura (informática)

Ir a: navegación, búsqueda de

Basura, en el contexto de Ciencias de la computación, se refiere a objetos, datos, u otras regiones de la memoria de un ordenador (u otros recursos de sistema), que no se utilizará en cualquier cómputo futura por el sistema, o por un programa que se ejecuta en él. Como todos los sistemas informáticos tienen cantidades finitas de memoria, es con frecuencia necesario desasignar basura y devuélvalo a la pila, o a la piscina de la memoria, así la memoria subyacente puede ser reutilizada.

Clasificación

Basura generalmente se clasifica en dos tipos:

basura semántica
Basura semántica es cualquier objeto o datos que nunca se accederá por un programa en ejecución, para cualquier combinación de insumos para el programa.
basura sintáctica
Basura sintáctica se refiere a objetos o datos dentro del espacio de memoria del programa inalcanzable desde el programa sistema de raíz.

Tenga en cuenta que basura sintáctica es un subconjunto (generalmente estricto) de basura semántico como es posible para un objeto para mantener una referencia a otro objeto sin el objeto último siendo utilizado. Determinación de la semántica presente en un programa de basura es generalmente indecidible, pero existen muchos algoritmos para identificar la basura sintáctica.

Dicen que son objetos o datos que no son basura vivir.

Eliminación de basura

El problema de administrar la desafectación de basura es bien conocida en Ciencias de la computación. Se toman varios enfoques:

  • Muchos sistemas operativos reclamará la memoria y los recursos utilizados por un proceso o programa cuando termina. Programas simples o de breve duración que están diseñados para ejecutarse en entornos pueden salir y permitir que el sistema operativo realizar cualquier reclamación necesario.
  • En los sistemas o lenguajes de programación con gestión de memoria manual, el programador debe organizar explícitamente para que la memoria que se elimina cuando ya no se utiliza. C y C++ son dos idiomas conocidos que apoyan este modelo.
  • Recolección de basura utiliza algoritmos diferentes para analizar el estado de un programa, identificar basura y lo desasignar sin intervención del programador automáticamente. Muchos lenguajes de programación modernos tales como Java y Haskell proporcionar recolección automatizada. Sin embargo, no es un desarrollo reciente, como también ha sido utilizado en más idiomas tales como LISP.
  • Hay investigaciones en curso para tipo teórico enfoques (tales como inferencia de la región) para la identificación y eliminación de la basura de un programa. Tenga en cuenta que no se ha desarrollado ningún tipo teoría general solución al problema.

Un ejemplo de la eliminación automática de basura semántica, por recuento de referencias recolección de basura, puede ser producido mediante la Python de línea de comandos intérprete:

>>> clase Foo(objeto)::
... 'Esto es una clase de prueba vacía'.
... pase
...
>>> bar = Foo()
>>> bar
<__main__.Foo objeto en 0x54f30>
>>> del bar

En esta sesión, se crea un objeto, se muestra su ubicación en la memoria y la única referencia al objeto entonces es destruida — es imposible utilizar siempre el objeto nuevo desde este punto, como no existen referencias a él. Esto se hace evidente cuando tratamos de acceder a la referencia original:

>>> barra de rastreo. (más reciente llamada ultima):: Archivo "< stdin >", línea 1, in ?
NameError:: nombre 'bar' is No define

Como es imposible hacer referencia al objeto, se ha convertido en inútil: el objeto es basura. Desde Python utiliza la recolección de basura, automáticamente libera la memoria que se utilizó para el objeto que puede ser utilizado otra vez:

>>> clase Bar(objeto)::
... "Esta es otra clase de prueba".
... pase
...
>>> Baz = Bar()
>>> Baz
<__main__.Bar objeto en 0x54f30>

Tenga en cuenta que el Bar instancia ahora reside en la localidad de memoria 0x54f30; en el mismo lugar donde nuestro objeto anterior, la Foo ejemplo, fue localizado. Puesto que el Foo instancia fue destruida, liberando la memoria utilizada para contenerlo, el intérprete crea el Bar objeto en la misma ubicación de memoria que antes, haciendo buen uso de los recursos disponibles.

Enlaces externos

  • Benjamín Pierce (editor), Tópicos avanzados en tipos y lenguajes de programación, MIT Press (2005), ISBN 0-262-16228-8
  • Richard Jones y Rafael Lins, Recolección: Algoritmos para el manejo automatizado de memoria dinámica, Wiley e hijos (1996), ISBN 0-471-94148-4

Otras Páginas

Obtenido de"https://en.copro.org/w/index.php?title=Garbage _ (computer_science) & oldid = 624939649"