큰 텍스트 파일을 메모리로 읽어 들이고 처리하는 간단한 asp.net 웹 사이트가 있습니다. 다음은 OOM 예외를 발생시키는 코드입니다. 약 350k 라인을 읽은 후에이 오류가 발생합니다. 각 행의 평균 문자 수는 1k입니다. IIS 또는 ASP.Net 웹 사이트에 일부 메모리 제한이 있습니까? 내 서버에는 아직 많은 실제 메모리가 남아 있습니다. 감사.asp.net에서 메모리 부족 예외가 발생하는 이유
List<string> geos = new List<string>();
using (StreamReader geoReader = new StreamReader(File.OpenRead("file.txt")))
{
while (geoReader.EndOfStream == false)
{
try
{
geos.Add(geoReader.ReadLine());
}
catch (Exception ex) { }
}
}
충돌 구문에서 메모리 덤프를 캡처하도록 adplus를 설정하면 다음과 같은 결과가 나타납니다. adplus -crash -iis : http://msdn.microsoft.com/en-us/magazine/cc163833.aspx –
실제로 메모리 제한이 있습니다. .그물. 처리하기 전에 데이터를 청크로 분해 할 수 있습니까? –
당신은 메모리 한계를 무시할 수 있지만, 그것은 깨지기 쉬운 접근 방법, 더 큰 파일, 더 많은 메모리 객체를 처리하는 것만으로 그것을 사용할 것입니다. 살펴볼 사항은 메모리로 모든 데이터를 필요로하는 것입니다. OOM은 실제 컴퓨터가 아닌 메모리가 부족한 네트워크 프로세스입니다. 실제로 수집 한 후에도 처리 할 수 없었던 것은 메모리의 연속적인 자유 블록을 찾습니다. –