예측할 수없는 큰 파일을 구문 분석하는 프로그램을 작성하고 있습니다. 이 부분에는 아무런 문제가 없습니다. 아래의 코드를 사용하여 문서 끝까지 ReadLine을 반복하여 메모리 사용량을 줄입니다. 내 문제는 라인이 너무 길 때 OutOfMemoryException
입니다.C# 블록 구현 읽기
System.IO.StreamReader casereader = new System.IO.StreamReader(dumplocation);
string line;
while ((line = casereader.ReadLine()) != null)
{
foreach (Match m in linkParser.Matches(line))
{
Console.Write(displaytext);
Console.WriteLine(m.Value);
XMLWrite.Start(m.Value, displaytext, dumplocation, line);
}
}
XMLWrite는 XML 문서에 내 Regex 기능과 일치하는 문자열을 쓰고 있습니다. Regex 함수는 간단한 전자 메일 검색입니다. 이 문제는 ReadLine이 호출되고 응용 프로그램이 내가 읽고있는 파일에서 매우 긴 행을 찾을 때 발생합니다.이 파일은 작업 관리자에서 올라가고 '문자열'을 채우는 것처럼 올라갑니다. 결국에는 메모리가 부족하여 충돌이 발생합니다. 내가하고 싶은 일은 사전 정의 된 블록 (예 : 8,000 자)을 읽은 다음 동일한 프로세스를 통해 한 번에 하나씩 실행하는 것입니다. 이것은 문자열 행 (8,000 자)의 길이를 항상 알고 있으므로 메모리 예외를 수신하거나 저장하지 않아야 함을 의미합니다. 내 논리는 논리처럼 보입니까!? ReadBlock을 구현하는 가장 좋은 방법을 찾고 있는데 현재로서는 작동하지 않습니다.
많은 도움을 주셨습니다.
* 여전히 메모리 부족 문제가 있습니까? 그렇지 않다면, 귀하의 질문은 무엇입니까? 첫 번째 코드 블록에 OOM 문제가 있고 미리 정의 된 블록을 읽으면이를 수정한다는 것을 의미합니다. –
그리고 무슨 일 이니? 오류? –
어떤 오류가 발생합니까? 당신이 가지고있는 문제는 무엇입니까? Visual Studio에서 코드를 시도하지는 않았지만 논리가 좋았습니다 ... 컴파일러가 불평입니까? –