将文档添加到文档列表时的Java堆空间

问题描述 投票:1回答:2

我正在使用导入org.w3c.dom.Document;用于文档。

我有这段代码可以从arraylist fileList中解析xml文件,要解析的XML文件超过2000个,xml文件的大小约为30-50 Kb,我解析文件没有问题:] >

    try {
        for(int i = 0; i < fileList.size(); i++) {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(fileList.get(i)); //<------ error will point here when docList.add(doc) is uncommented.
            docList.add(doc); 
        }
    } catch (ParserConfigurationException | SAXException | IOException e) {
        e.printStackTrace();
    }

但是只要我将它们添加到列表中,就会出现此错误:

线程“主”中的异常java.lang.OutOfMemoryError:Java堆空间在com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.createChunk(未知来源)在com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.ensureCapacity(未知来源)在com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.createNode(未知来源)在com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.createDeferredTextNode(未知来源)在com.sun.org.apache.xerces.internal.parsers.AbstractDOMParser.characters(未知来源)在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(未知来源)在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知来源)在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知来源)在com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(未知来源)在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知来源)在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知来源)在javax.xml.parsers.DocumentBuilder.parse(未知来源)在com.test.parser.Parser.getDocs(Parser.java:146)在com.test.parser.Parser.main(Parser.java:50)

取消docList.add(doc)的注释不会产生此异常,不知道为什么会发生这种情况吗?

编辑:我在运行配置中将-Xmx1024M添加到VMArguments中,并且它起作用。

我正在使用导入org.w3c.dom.Document;用于文件。我有这段代码,可以从arraylist fileList解析xml文件,有超过2000个xml文件需要解析,其大小为...

java xml out-of-memory
2个回答
1
投票

uncommenting the docList.add(doc) does not produce this exception, any idea why this is happening?


0
投票

右键单击项目文件夹单击-> runAs->运行配置->单击参数选项卡->添加

© www.soinside.com 2019 - 2024. All rights reserved.