문제

국외 파서를 사용하여 약 15GB의 XML 파일을 구문 분석하고 있습니다. 문제는 "메모리 외"오류가 발생하고 프로그램이 중단된다는 것입니다.

신체가 국외 파서와 비슷한 문제에 직면했는지 알고 싶거나 알려진 버그이며 이후 버전에서 수정 되었습니까?

도움이 되었습니까?

해결책

나는 거주자를 사용하여 대형 파일을 구문 분석하고 아무런 문제가 없었습니다. 나는 당신이 Sax를 사용하고 있다고 가정하고 있으며 국외 거주자 DOM 포장지 중 하나가 아니라고 가정합니다. DOM을 사용하는 경우 바로 문제입니다. 본질적으로 전체 파일을 메모리에로드하려고합니다.

XML을 구문 분석하고 거래하지 않을 때 객체를 할당하고 있습니까? 그것이 내가 확인할 첫 번째 일이 될 것입니다. 문제가 실제로 국외 거주자인지 아닌지 확인하는 한 가지 방법 - 비 빈 태그 처리기가있는 간단한 버전으로 프로그램을 줄이면 (예 : 파일을 구문 분석하고 결과와 아무것도하지 않음) 여전히 메모리가 소진됩니까?

다른 팁

나는 국외 거주자를 전혀 모른다. 그러나 어떤 이유로 든 너무 많은 상태를 메모리에 유지해야한다고 생각한다. XML Mal은 어떤 식 으로든 형성됩니까? 큰 블록의 최종 태그에 등록 된 핸들러가 있습니까?

큰 블록의 끝에 핸들러가 등록되어 있고 국외 거주자가 블록을 핸들러에게 전달할 것으로 예상되는 경우, 해당 블록을 완전히 수집하기 전에 해외 거주자가 메모리가 부족할 수 있습니다. 내가 말했듯이, 나는 국외 거주자를 모른다. 그래서 이것은 불가능할 수도있다. 나는 단지 물었다.

또는 국외 거주자가 메모리 손실이있는 곳이라고 확신합니까? XML 파일의 내용에 대한 정보를 보관하고있는 상황과 데이터가 너무 크거나 코드의 메모리 누출로 인해 메모리가없는 상태가 발생했기 때문에 자체 데이터 구조를 보관하는 상황을 상상할 수 있습니다.

국외 거주자는 이벤트 중심 파서입니다.이 파서는 큰 메모리 구조물을 구성하지 않습니다. 따라서 문제가 될 수있는 국외 거주자 (큰 파일을 파싱하는 데 매우 널리 사용됨)가 아닐 수도 있습니다.

국외 거주자는 누출되어 있습니다 - 나는 장기 실행 서버에서 사용하기 시작했으며, 파서가 해제되었는지 여부에 관계없이 메모리가 일관되게 누출된다는 것을 발견하고 있습니다. 보다 최근의 XMLPARSE.C 버전은이 문제를 해결하지 않고 기존 누출 만 숨 깁니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top