Как принудительно освободить память, занятую MemoryStream?

У меня есть следующий код:

const int bufferSize = 1024 * 1024;
var buffer = new byte[bufferSize];
for (int i = 0; i < 10; i++)
{
    const int writesCount = 400;
    using (var stream = new MemoryStream(writesCount * bufferSize))
    {
        for (int j = 0; j < writesCount; j++)
        {
            stream.Write(buffer, 0, buffer.Length);
        }
        stream.Close();
    }
}

который я запускаю на 32-битной -машине.

Первая итерация завершается просто отлично, а затем на следующей итерации я получаю исключение System.OutOfMemoryExceptionв строке, где newсоответствует MemoryStream.

Почему предыдущая память MemoryStreamне восстанавливается, несмотря на оператор using? Как принудительно освободить память, используемую MemoryStream?

14
задан Sergey Brunov 17 August 2012 в 11:06
поделиться