2010-05-21 4 views
1

웹 서비스 및 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; 
} 

하고 1메가바이트 같은 작은 파일과 함께 작동하지만, 포토샵에 관해서의가 (1,5gb에 대해) 파일을 내가 얻을 : 이 라인에

System.OutOfMemoryException 

:

Byte[] img = new Byte[fs.Length]; 

생각이 나는이 파일을 얻을 오을 저장 윈폼 응용 프로그램이 n 로컬 디스크.

답변

2

이 모두는 예외가 던져지는 위치에 따라 다릅니다. 대부분의 경우, 크기가 LOH (Large Object Heap)로 들어가고 메모리 조각화가 문제를 일으키는 파일이라는 것입니다.
How do I get .NET to garbage collect aggressively?

: SO 질문 비슷한에

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

링크

관련 문제