通过互联网服务和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

http://blogs.msdn.com/webtopics/archive/2009/05/22/Troubleshooting-System.OutOfMemoryExceptions-in-ASP.NET.aspx

链接到一个类似的SO问题:
How do I get .NET to garbage collect aggressively?