通过互联网服务和OOM异常发送大文件
问题描述:
我有web服务,与方法:通过互联网服务和OOM异常发送大文件
[WebMethod]
public byte[] GetFile(string FName)
{
System.IO.FileStream fs1 = null;
fs1 = System.IO.File.Open(FName, FileMode.Open, FileAccess.Read);
byte[] b1 = new byte[fs1.Length];
fs1.Read(b1, 0, (int)fs1.Length);
fs1.Close();
return b1;
}
,并与像1MB小文件的工作,但是当涉及到Photoshop的File(约1,5gb)我得到:
System.OutOfMemoryException
在这条线
:
Byte[] img = new Byte[fs.Length];
的想法是我的WinForms应用程序,获得该文件并将其保存Ø本地光盘。
答
这一切都取决于引发异常的位置。最有可能发生的情况是,一个文件的大小将进入大对象堆(LOH)并且内存碎片导致该问题。
http://msdn.microsoft.com/en-us/magazine/cc534993.aspx
http://blogs.msdn.com/maoni/archive/2006/04/18/large-object-heap.aspx
链接到一个类似的SO问题:
How do I get .NET to garbage collect aggressively?