Desarrollador .NET: pregunta de entrevista

¿Cómo funciona el garbage collection en .NET?

El GC de .NET asigna objetos en generaciones, traza alcanzables desde roots, compacta heaps elegibles y trata objetos grandes aparte. Mide tasa de asignación, retención, finalizers y pausas antes de ajustar.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

El GC de .NET es generacional: los objetos nuevos caen en gen 0, los supervivientes se promueven a gen 1 y luego a gen 2, y los objetos de más de 85 KB van al heap de objetos grandes, que solo se recolecta con gen 2. Las recolecciones de gen 0 son frecuentes y baratas; las de gen 2 son raras y pueden pausar más, sobre todo en modo servidor con heaps grandes. La tasa de asignación determina la frecuencia de gen 0, la retención determina la promoción, y los finalizadores retrasan la liberación un ciclo completo. El GC de servidor usa un heap por núcleo para throughput; el de estación de trabajo favorece la latencia en escritorio. Las decisiones salen de dotnet-counters y trazas, no de valores por defecto elegidos a ciegas.

Ejemplo

Una API con pausas periódicas de 300 ms mostraba en dotnet-counters recolecciones de gen 2 cada minuto; la causa era un array de bytes de 100 KB por solicitud que caía en el heap de objetos grandes. Alquilarlo de ArrayPool eliminó el churn del LOH y las pausas. Un segundo servicio asignaba 2 GB por segundo de cadenas de vida corta por interpolación en logs, arreglado con logging estructurado con plantillas de mensaje.

Errores frecuentes

  • Llamar a GC.Collect desde código de aplicación para arreglar una fuga.
  • Ignorar el heap de objetos grandes al asignar buffers grandes por solicitud.
  • Cambiar a GC de servidor en un contenedor con memoria limitada y ser eliminado por superar los límites.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador .NET