次の単純なStAXコードを使用して、XMLのすべてのタグを反復処理しています。 input.xmlに> 100メガバイトStAXのメモリ不足エラー
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 Parserと同じエラーが発生しています。
Eclipse HeliosをIDEとして使用していますが、eclipse.iniなどでこれらの変更を行う必要がありますか?また、mとMの違いは何ですか?それはmBとMBですか? – Anand
MはMBを表します。 Eclipse IDEにVM引数を追加する必要があります( '実行コンフィギュレーション - >実行するプログラムの選択 - >引数 - > VM引数の追加') –
ありがとうございました。しかし、これは、今後1GBを超えるサイズのファイルを使用すると、コードが再びメモリ不足になることはありません。はいの場合、なぜですか? – Anand