java - StAX 内存不足错误

标签 java xml stax

我正在使用以下简单的 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/

相关文章:

java - StAX 解析器在运行时确定

java - 使用 StAX 写入 xml 字符串

java - 带选择器的 activemq 浏览命令

java - 使用java检查以ftp位置中的名称开头的文件

xml - Azure 集成帐户( map - XSLT)- 使用逻辑应用将 2 个不同的 XML 合并为单个 xml

xml - XSLT - 按顺序应用两个不同的模板

sql - APOSTROPHE 里面的 xml 元素值

java - XMLEventReader Stax API 无法获取 JDK 1.8 中属性的名称和值

java - 如果网站本身不支持推送通知,如何实现推送通知?

java - 电子邮件代码使 java spring MVC 中的代码变慢