Sobes.tech
Junior

¿Qué es el recolector de basura (Garbage Collector) en C#?

sobes.tech AI

Respuesta de la IA

Mecanismo automático de gestión de memoria que libera la memoria ocupada por objetos a los que ya no hay referencias. Esto previene fugas de memoria y simplifica el proceso de desarrollo.

Principios de funcionamiento del recolector de basura:

  1. Seguimiento de objetos: Identifica los objetos que aún están accesibles desde los nodos raíz (campos estáticos, variables locales en la pila).
  2. Recolección de basura: Si un objeto no tiene referencias, el recolector lo marca para su eliminación.
  3. Liberación de memoria: Libera la memoria ocupada por los objetos eliminados y comprime la memoria restante para reducir la fragmentación.

Generaciones de objetos:

  • Generación 0: Contiene objetos creados recientemente y de corta duración. La recolección ocurre con frecuencia.
  • Generación 1: Contiene objetos que han sobrevivido a una recolección de la generación 0. La recolección es menos frecuente.
  • Generación 2: Contiene objetos de larga duración. La recolección ocurre raramente.

Llamada forzada a GC (usada con poca frecuencia y con precaución):

// Llamada forzada a la recolección de basura
System.GC.Collect();
// Espera a que finalicen los finalizadores pendientes
System.GC.WaitForPendingFinalizers();

El mecanismo principal de recolección de basura en .NET es el algoritmo de marcado y compactación.