我正在通过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