Jasper Reports和巨大的XML作为数据源

时间:2012-03-13 07:05:16

标签: java jasper-reports

我有一个巨大的.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);

2 个答案:

答案 0 :(得分:1)

如果可能的话,你可以增加堆。但是为100MB xml文件创建DOM以及在同一JVM中创建pdf文档确实需要大量内存。尝试使用基于事件的SAX解析器处理输入文件。这应该会显着减少内存占用!

答案 1 :(得分:0)

除了使用更好的XML解析器之外,还要检查Jasper Reports - Virtualizer