StringBuilder.ToString () arroja OutOfMemoryException
He creado unStringBuilder
de longitud "132370292", cuando intento obtener la cadena usando elToString()
método que arrojaOutOfMemoryException
.
StringBuilder SB = new StringBuilder();
for(int i =0; i<=5000; i++)
{
SB.Append("Some Junk Data for testing. My Actual Data is created from different sources by Appending to the String Builder.");
}
try
{
string str = SB.ToString(); // Throws OOM mostly
Console.WriteLine("String Created Successfully");
}
catch(OutOfMemoryException ex)
{
StreamWriter sw = new StreamWriter(@"c:\memo.txt", true);
sw.Write(SB.ToString()); //Always writes to the file without any error
Console.WriteLine("Written to File Successfully");
}
¿Cuál es la razón de la OOM al crear una nueva cadena y por qué no arroja la OOM al escribir en un archivo?
Detalles de la máquina: 64 bits, Windows-7, 2 GB de RAM, .NET versión 2.0