我寫了下面的程序,其目的是爲了創造一個給定大小的文件與它的一些隨機數據。該程序工作正常,並做它應該做的。但是,我不明白爲什麼它會消耗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