Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关闭XML文件?_Java_Xml - Fatal编程技术网

Java 关闭XML文件?

Java 关闭XML文件?,java,xml,Java,Xml,因此,我找到了一种加载xml文件的方法 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; String filePath = stuff; try { builder = factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { // TO

因此,我找到了一种加载xml文件的方法

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
String filePath = stuff;
try {
    builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Document document;
try {
    document = builder.parse(file);
} catch (Exception e) {}
// Start reading xml
NodeList list = document.getDocumentElement.getChildNodes();
// And here comes the algorithm to read from xml...
但是,问题是,这是我计划的一部分。 我的程序设计为读取一个文件,输出其详细信息,然后等待用户输入另一个xml,然后继续循环。 我提出这个问题的原因是我的xml文件非常大(20Mb到50Mb),我认为那里的xml编辑器可能会失败。加载第二个文档时,第一个文档和之前加载的文档都保存在内存中,javaw.exe很快就占用了1GB的内存。
有没有办法通过从内存中卸载文档来解决这个问题?

您必须使用诸如SAX或StAX之类的流式API之一,并使用事件解析数据,而不是使用DOM将整个内容加载到内存中(这就是您正在做的事)


但是,您也可以尝试通过将变量放入循环中并让垃圾收集器为您处理来减少变量的范围,但您仍然会遇到使用高峰。

您必须使用诸如SAX或StAX之类的流式API之一,并使用事件解析数据,而不是使用DOM将整个内容加载到内存中(这就是你正在做的事情)


但是,您也可以尝试通过将变量放入循环中并让垃圾收集器为您处理来减少变量的范围,但是您仍然会有一个使用高峰。

您需要将完整的DOM保留在内存中,还是可以保留一个更轻量的JAXB表示,或者更轻量的POJO表示相关的DOM信息?当你说保留在内存中时,你是什么意思?你的程序保留了对这些文档的引用,或者你觉得XML库保留在内存中,尽管你不需要它?我是新的,在这里和XML阅读,那么所有这些都意味着什么?你应该在问题中添加更多的代码,以便能够识别引用的位置保留DOM树的引用。是否需要将完整的DOM保留在内存中,或者是否可以保留更轻量级的JAXB表示或更轻量级的POJO表示相关信息?当您说保留在内存中时,您的意思是什么?您的程序保留对这些文档的引用,或者您感觉XML库将其保留在内存中尽管您不需要它?我是新手,无论是在这里还是在阅读Xml,那么所有这些都意味着什么呢?您应该在问题中添加更多的代码,以便能够确定DOM树的引用保存在何处。