当使用大文件的Http.Post
时,出现“内存不足”异常。当我试图将文件流数据写入内存流时,我收到了这个异常。将大文件(300MB)写入内存流时出现内存不足异常
回答
显然,将300MB数据放入内存会导致CLR达到其最大内存占用量。您是否考虑过将文件写入其他类型的流中,以避免同时将它们全部存储在内存中?也许你可以直接将文件写入磁盘,然后在后面处理文件,而不是同时将整个文件加载到内存中。
是的,保持简单。虽然300MB仍然远离2GB上限(CLR/32)。这取决于还在发生什么。 –
事情是,我使用HttpWebRequest post方法将文件发布到Web服务,所以我将它保存在内存流中。 – Cipriyan
@Cipriyan:那么这是客户端代码,在将文件上传到网络服务器之前将其加载到内存中?你有没有考虑过使用WebClient.UploadFile? http://msdn.microsoft.com/en-us/library/system.net.webclient.uploadfile(VS.80).aspx – StriplingWarrior
设置HttpWebRequest.AllowWriteStreamBuffering = false。这将导致HWR立即发送数据,而不是将其缓存在内存中。
上述答案的工作对我来说,这个人做的工作:
这些行是关键:
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(yourUri);
wr.KeepAlive = false;
wr.Timeout = System.Threading.Timeout.Infinite;
wr.ProtocolVersion = HttpVersion.Version10;
在这里:
wr.AllowWriteStreamBuffering = false;
希望这可以帮助那里的人。
- 1. 内存不足异常缓存位图时出现异常
- 2. 将大文件写入Blob存储和内存不足
- 3. 注册WMI事件查询时出现内存不足异常
- 4. Solr内存不足异常
- 5. C#:内存不足异常
- 6. 内存不足异常
- 7. 内存不足异常System.Drawing.Image.FromStream()
- 8. AudioRecord内存不足异常
- 9. ListView内存不足异常
- 10. SessionState内存不足异常
- 11. Imagefrom.File()。内存不足异常
- 12. 内存不足异常
- 13. 内存不足异常
- 14. CarouselView内存不足异常
- 15. 内存不足异常?
- 16. “扩展内存流时内存不足”
- 17. 调用Web服务时出现“内存不足”异常
- 18. 内存不足在WCF调用时出现异常
- 19. GZipStream在解压缩时出现内存不足异常
- 20. 加载图像时出现内存不足异常
- 21. 解析xml @ wp7时出现内存不足异常
- 22. 内存不足异常 - 为HttpWebRequest读取大文本文件
- 23. 当读大文件时内存不足
- 24. string.split()当读取tab分隔文件时出现“内存不足异常”
- 25. 内存不足异常如果文件大到
- 26. asp.net大文件下载内存不足异常
- 27. 当内存不足时,python内存异常
- 28. Java获取大输入流的大小给出内存不足
- 29. 使用Web服务检索大数据时出现内存不足异常
- 30. Android将流转换为字节数组内存不足异常
您正在处理地址空间碎片。当你的程序运行一段时间时,300 MB相当难以处理。一个64位操作系统是一个简单的解决方案。 –