我正在通過USB設備下載視頻文件。該程序將文件存儲在byte[]
陣列中,然後使用WriteAllBytes
寫入新文件。但完成後,即使在將null
指定爲byte[]
後,系統內存仍然在使用中。C#在使用字節[]後清除系統內存變量
下面是代碼:
byte[] myByte = session.DownloadFile(InFile);
File.WriteAllBytes(OutFile, myByte);
myByte = null;
session.DownloadFile()
是我自己的類這一切工作正常只是一個記憶的問題。如果程序使用的內存超過1GB,則程序崩潰。
「使用中」是GC系統中的灰色區域。看看TaskManager在這裏不是一個好的診斷。只要你沒有得到OOM例外:沒問題。 –
這不是處理大文件的好方法,如果是4gb呢?如果可能的話,IMO會更好地使用流,並以塊爲單位寫入目標文件。 – Gavin
看看這個(即不要使用那麼多的內存,如果可能的話)http://stackoverflow.com/questions/2269607/how-to-programmatically-download-a-large-file-in-c-sharp檢查接受回答。 – Gavin