Я написал следующую программу, цель которой - создать файл с размером выдачи с некоторыми случайными данными в нем. Программа отлично работает и делает то, что она должна делать. Однако я не понимаю, почему он потребляет 5 ГБ оперативной памяти (см. Снимок экрана моего диспетчера задач). Хотя я пишу файл со случайными данными, я не создаю новые объекты. Что мне не хватает? Я бы ожидал, что эта программа вообще не будет иметь памяти.Использование FileStream и памяти
Большая проблема, я сейчас является то, что в середине на генерацию файла, машина умирает ...
class Program
{
static void Main(string[] args)
{
CreateFile("test.dat", 10 * 1024 * 1024);
}
public static void CreateFile(string path, long approximativeFileSizeInKb)
{
RandomNumberGenerator randomNumber = RandomNumberGenerator.Create();
byte[] randomData = new byte[64 * 1024];
int numberOfIteration = 0;
randomNumber.GetNonZeroBytes(randomData);
using (FileStream fs = File.Create(path, 64 * 1024))
{
while (numberOfIteration++ * 64 < approximativeFileSizeInKb)
{
fs.Write(randomData, 0, randomData.Length);
}
}
}
}
Я просто попробовал вашу программу, и после начала я вижу увеличение ~ 1 ГБ. Затем использование памяти остается там до конца. – Gonzalo
Gonzalo - Рад это слышать ... Но на диске все еще много памяти для записи? Вы x86 или x64? – Martin
Большая проблема, с которой я столкнулся сейчас, заключается в том, что в середине процесса генерации файла машина умирает ... – Martin