我写了下面的程序,其目的是为了创造一个给定大小的文件与它的一些随机数据。该程序工作正常,并做它应该做的。但是,我不明白为什么它会消耗5GB的RAM(请参阅我的任务管理器的屏幕截图)。当我用随机数据写文件时,我不创建新的对象。我错过了什么?我希望这个程序根本不会记忆。的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);
}
}
}
}
我刚试过你的程序,一开始我看到增加了〜1GB。然后内存使用停留在那里直到结束。 – Gonzalo 2010-10-21 20:23:40
Gonzalo - 很高兴听到......但是这仍然有很多RAM在磁盘上写入?你是x86还是x64? – Martin 2010-10-21 20:29:13
我现在面临的一个大问题是,在文件生成过程中,机器正在死亡...... – Martin 2010-10-21 20:40:40