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

Respuestas a la pregunta(3)

Su respuesta a la pregunta