これは、処理されるファイルのサイズ (50 ~ 100 MB の xml ファイル) により、Java VM の機能を超えている可能性があります。
現在、一連の xml ファイルを zip として送信しています。これらはすべて解凍され、ディレクトリ内のすべての XML が SAX を使用して一度に 1 つずつ処理されます。
時間とスペースを節約するために (圧縮率は約 1:10 であるため)、xml ファイルである ZipFileEntry を SAX ハンドラーに渡す方法はないかと考えていました。
DocumentBuilder やその他の xml 解析メソッドを使用してそれが行われるのを見てきましたが、パフォーマンス (および特にメモリ) のために、私は SAX を使い続けています。
現在、私は次の方法でSAXを使用しています
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
MyHandler handler = new MyHandler();
for( String curFile : xmlFiles )
{
System.out.println( "\n\n\t>>>>> open " + curFile + " <<<<<\n");
saxParser.parse( "file://" + new File( dirToProcess + curFile ).getAbsolutePath(), handler );
}