Tengo una pregunta muy básica.Recolección de basura del objeto creado en el bucle infinito
Me escribe un bucle como este:
while(true)
{
MyTestClass myObject = new MyTestClass();
}
- Cuando será el objeto creado en el bucle, el recolector de basura?
- Además, para cada iteración, ¿es que la nueva ubicación de memoria es asignada a la referencia myObject?
- ¿Qué pasa si escribo
myObject = null;
al final de cada iteración?
¿Seguro que la variable tiene necesariamente un lugar fijo cada pasarela? Dado que la declaración de variable está dentro del ciclo, ¿no es este un escenario más dinámico en el que sería capaz de capturar diferentes "instancias" de myObject si las empleó construyendo una expresión Lambda dentro del ciclo que tuvo una vida más allá del ciclo? ¿O es eso un truco de compilación? – Tormod
¿Es correcto que la variable myObject tenga una posición fija en la pila? Creo que cada vez que una nueva variable llamada 'myObject' se crea en la pila (y una creada en la iteración anterior es obviamente eliminada). ¿Estoy en lo correcto? – Amey
@Tormod, en ese caso, el almacenamiento de un campo en el cierre para la lambda se crearía dinámicamente, y el campo se poblaría copiando el valor contenido en la variable, pero eso no afecta la ubicación de la variable en la pila. –