Junior — Middle
¿Qué etapas de desarrollo se pueden distinguir en el ciclo de vida de los objetos en la memoria gestionada?
sobes.tech AI
Respuesta de la IA
El ciclo de vida de los objetos en la memoria gestionada en C# se puede dividir en varias etapas:
- Creación (Allocation) — el objeto se crea en el montón gestionado (heap) usando el operador
new. - Uso (Usage) — el objeto se utiliza en el programa, y las referencias a él se almacenan en variables.
- Recolección de basura (Garbage Collection) — cuando ya no hay referencias al objeto, el recolector de basura lo marca como candidato para ser eliminado.
- Liberación de memoria (Finalización y Deallocación) — si el objeto tiene un finalizador (
Finalize), se llama antes de liberar la memoria; luego, la memoria se libera.
Un punto importante — el recolector de basura en .NET funciona por generaciones (Gen 0, Gen 1, Gen 2), lo que optimiza el rendimiento y el tiempo de limpieza.
Ejemplo:
class MyClass {
~MyClass() {
// Finalizador, se llama antes de eliminar el objeto
}
}
var obj = new MyClass(); // Creación
// Uso de obj
obj = null; // El objeto ya no está accesible
// El recolector de basura liberará la memoria más tarde