我正在使用以下简单的 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 解析器相同的错误。
最佳答案
在运行 JVM 时定义堆大小
-Xms initial java heap size
-Xmx maximum java heap size
-Xmn the size of the heap for the young generation
例子:
bin/java.exe -Xmn100M -Xms500M -Xmx500M
关于java - StAX 内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6502386/