次の単純な StAX コードを使用して、XML のすべてのタグを反復処理しています。input.xmlのサイズ > 100 MB
XMLInputFactory xif = XMLInputFactory.newInstance();
FileInputStream in = new FileInputStream("input.xml");
XMLStreamReader xsr = XMLInputFactory.newInstance().createXMLStreamReader(in);
xsr.next();
while (xsr.hasNext()) {
xsr.next();
if(xsr.isStartElement() || xsr.isEndElement())
System.out.println(xsr.getLocalName());
}
}
このエラーが発生しています:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
これを回避する方法を教えてください。StAX は巨大な XML を適切に処理すると読みましたが、DOM パーサーと同じエラーが発生します。