2010-05-21 97 views
1

我有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應用程序,獲得該文件並將其保存Ø本地光盤。

回答

2

這一切都取決於引發異常的位置。最有可能發生的情況是,一個文件的大小將進入大對象堆(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?