我有一个巨大的.xml
作为数据源(大约100 MB)。如何有效地使用此xml准备pdf并且没有java.lang.OutOfMemoryError: Java heap space
?
HashMap<String, Object> params = new HashMap<String,Object>();
// below i get: java.lang.OutOfMemoryError
Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(dataSource));
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
jasperPrint = JasperFillManager.fillReport(jasperReport, params);
答案 0 :(得分:1)
如果可能的话,你可以增加堆。但是为100MB xml文件创建DOM以及在同一JVM中创建pdf文档确实需要大量内存。尝试使用基于事件的SAX解析器处理输入文件。这应该会显着减少内存占用!
答案 1 :(得分:0)
除了使用更好的XML解析器之外,还要检查Jasper Reports - Virtualizer。