Desde el punto de vista de la memoria. ¿Cómo creéis que se comporta esto?
void MemoryLeakTest()
{
for (int i = 0; i < 1000000; i++)
{
TimeSpan intervalo = new TimeSpan(2, 0, 0); // 2 horas
Console.WriteLine("Nueva fecha: {0}",
DateTime.Now.Add(intervalo));
}
}
Preguntas:
- ¿Confío en el Recolector de Basura para que cada cierto número de iteraciones me vaya borrando de la memoria todas las instancias de "intervalo" que ya no uso?
- ¿Debería hacer una llamada al Recolector de Basura para que haga "limpieza" y así quitar todas las instancias de "intervalo" que ya no se están usando?
- ¿Debería de declarar "intervalo" fuera del bucle?
- ¿Confío en que el compilador optimice mi código y declare la variable fuera del bucle?
Pregunta extra:
Y si en lugar de ser una variable de tipo instancia de clase fuese una variable de tipo valor como por ejemplo un entero. ¿Aplicaría lo mismo, o me quedaría sin memoria en la pila de programa?