10 분 간격으로 한 번씩과 같이 주기적으로 많은 XML 파일 집합 (20-30 자 정도)을 주기적으로 읽는 응용 프로그램이 있습니다. 이제 각 XML 파일은 최소 40-100MB 크기로 근사 될 수 있습니다. 각 XML이 읽히고 나면 파일에서 맵을 만든 다음 프로세서 체인 (10-15), 각 프로세서에서 데이터를 사용하여 일부 필터를 수행하거나 데이터베이스에 쓰는 등의 방법으로 맵을 전달합니다.큰 XML 파일을 읽는 확장 응용 프로그램
이제 응용 프로그램이 32 비트 JVM에서 실행됩니다. 지금 64 비트 JVM으로 이동할 생각은 없습니다. 예상대로 메모리 풋 프린트가 매우 높습니다 ... 32 비트 JVM의 임계 값에 근접합니다. 현재 우리는 대용량 파일을받을 때 생성 된 맵을 디스크에 직렬화하고 동시에 모든 맵을 처리하려고하는 것처럼 최대 3-4 개까지의 프로세서 체인을 동시에 실행하면 쉽게 OutOfMemory가됩니다. 또한 쓰레기 수거는 꽤 높습니다.
나는 몇 가지 아이디어가 있지만 사람들이 이미 시도/평가 한 몇 가지 옵션이 있는지보고 싶었습니다. 이런 종류의 응용 프로그램을 확장하기위한 옵션은 무엇입니까?
Oracle DB는 XML 데이터베이스 기능을 제공합니다. 하지만 xml 스키마를 사용해야합니다. 또한 귀하의 요구 사항에 적합한 지 확실하지 않습니다. http://www.oracle.com/technetwork/database/features/xmldb/index.html –
DOM을 사용하여 이러한 파일을 구문 분석하지 않기를 바랍니다. 그렇다면 색소폰으로 전환하면 메모리 사용 공간이 크게 향상됩니다. – MeBigFatGuy
정말로 원하면 쓰레기를 거의 제로로 줄일 수 있습니다. 재 작업의 가치가 있다고 생각하는지 여부 만 문제입니다. 개인적으로 당신의 컴퓨터가 작업을 수행 할 수있는 충분한 메모리를 가지고 있는지 확인해야하고 애플리케이션을 전혀 변경할 필요가 없을 수도 있습니다. –