Java XML解析中内存不足错误
在解析一个大小超过350MB的XML文件时,我遇到了“java.lang.OutOfMemoryError:java堆空间”错误 PFB代码段:Java XML解析中内存不足错误,java,xml,parsing,Java,Xml,Parsing,在解析一个大小超过350MB的XML文件时,我遇到了“java.lang.OutOfMemoryError:java堆空间”错误 PFB代码段: File file = new File("D:\WS\data.xml"); InputSource source = new InputSource(new FileInputStream(file)); XPathFactory xPathFact = XPathFactory.newInstance(); XPath xPath = xPath
File file = new File("D:\WS\data.xml");
InputSource source = new InputSource(new FileInputStream(file));
XPathFactory xPathFact = XPathFactory.newInstance();
XPath xPath = xPathFact.newXPath();
XPathExpression expr = xPath.compile("//person");
NodeList nodeList = (NodeList)expr.evaluate(source, XPathConstants.NODESET);
我在它试图评估的最后一行遇到了错误。您可以尝试一种内存消耗较少的方法,允许动态处理您的目标节点,实际上,它不会将所有节点都放在内存中,如果它们不能全部放入堆中,可能导致OOME,而只保留当前节点 以下是如何通过以下方式完成:
关于XMLDog的更多详细信息。您可以尝试一种内存消耗较少的方法,允许动态处理目标节点,实际上,它不会将所有节点都放在内存中,如果它们不能全部放入堆中,可能会导致OOME,而只保留当前节点 以下是如何通过以下方式完成:
关于XMLDog的更多详细信息。一些XML构造可能非常消耗内存。你能在xml中看到任何可疑的东西吗?这篇论坛帖子可能很有用。你是否尝试重新启动所有内容?你是否为Java分配了特定数量的内存?您总是可以添加更多内容,看看它是否能够通过。一些XML结构可能非常消耗内存。你能在xml中看到任何可疑的东西吗?这篇论坛帖子可能很有用。你是否尝试重新启动所有内容?你是否为Java分配了特定数量的内存?你总是可以添加更多,看看它是否能通过。
XMLDog dog = new XMLDog(null, null, null);
dog.addXPath("//person");
Event event = dog.createEvent();
event.setXMLBuilder(new DOMBuilder());
event.setListener(new InstantEvaluationListener(){
@Override
public void onNodeHit(Expression expression, NodeItem nodeItem){
Node personNode = (Node) nodeItem.xml;
// Treat your person node here
}
@Override
public void finishedNodeSet(Expression expression){}
@Override
public void onResult(Expression expression, Object result){}
});
File file = new File("D:\WS\data.xml");
InputSource source = new InputSource(new FileInputStream(file));
dog.sniff(event, source, false);