向内存流写入大文件(300MB)时出现内存不足异常
本文关键字:异常 内存不足 300MB 内存 文件 | 更新日期: 2023-09-27 18:06:50
当使用大文件的Http.Post
时,我得到内存不足异常。当我试图将文件流数据写入内存流时,我得到了这个异常。
显然,将300mb的数据放入内存会导致CLR达到其最大内存占用。您是否考虑过将文件写入其他类型的流,以避免同时将所有文件放在内存中?也许您可以直接将文件写入磁盘,然后分块处理文件,而不是同时将整个文件加载到内存中。
以上答案都不适合我,这个可以:
http://blogs.msdn.com/b/johan/archive/2006/11/15/are-you-getting-outofmemoryexceptions-when-uploading-large-files.aspx这几行是关键:
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(yourUri);
wr.KeepAlive = false;
wr.Timeout = System.Threading.Timeout.Infinite;
wr.ProtocolVersion = HttpVersion.Version10;
:
wr.AllowWriteStreamBuffering = false;
设置HttpWebRequest.AllowWriteStreamBuffering=false。这将导致HWR立即发送数据,而不是在内存中缓冲。