Recolección de basura (gc)

Definición: ¿Qué significa recolección de basura (GC)?

La recolección de basura (GC) es un enfoque dinámico para la administración automática de memoria y la asignación de montones que procesa e identifica los bloques de memoria muertos y reasigna el almacenamiento para su reutilización. El propósito principal de la recolección de basura es reducir las pérdidas de memoria.

La implementación de GC requiere tres enfoques principales, como sigue:

  • Marcar y barrer: en el proceso, cuando se agota la memoria, el GC ubica toda la memoria accesible y luego recupera la memoria disponible.
  • Recuento de referencias: los objetos asignados contienen un recuento de referencias del número de referencia. Cuando el recuento de memoria es cero, el objeto es basura y luego se destruye. La memoria liberada vuelve al montón de memoria.
  • Copiar colección: hay dos particiones de memoria. Si la primera partición está llena, el GC ubica todas las estructuras de datos accesibles y las copia en la segunda partición, compactando la memoria después del proceso del GC y permitiendo una memoria libre continua.

Algunos lenguajes de programación y plataformas con GC integrado (por ejemplo, Java, Lisp, C # y .Net) autogestionan pérdidas de memoria, lo que permite una programación más eficiente.

Techinfo explica la recolección de basura (GC)

El enfoque dinámico de la recolección de basura para la asignación automática del montón aborda errores comunes y costosos que a menudo resultan en defectos del programa del mundo real cuando no se detectan.

Debido a que son difíciles de identificar y reparar, los errores de asignación son costosos. Por lo tanto, muchos consideran que la recolección de basura es una característica esencial del lenguaje que facilita el trabajo del programador con una administración de asignación de montón manual más baja. Sin embargo, GC no es perfecto y se deben considerar los siguientes inconvenientes:

  • Al liberar memoria, GC consume recursos informáticos.
  • El proceso de GC es impredecible, lo que provoca retrasos en las sesiones dispersas.
  • Cuando las referencias de objetos no utilizadas no se eliminan manualmente, GC provoca pérdidas de memoria lógica.
  • GC no siempre sabe cuándo procesar dentro de los entornos de memoria virtual de las computadoras de escritorio modernas.
  • El proceso de GC interactúa mal con la memoria caché y los sistemas de memoria virtual, lo que genera dificultades para ajustar el rendimiento.

Esta definición fue escrita en el contexto de Programación General.