java.lang.OutOfMemoryError:JasperReports中的Java堆空间

时间:2011-11-10 09:34:01

标签: java swing jasper-reports

在我要打印的swing应用程序中,会出现以下异常。但并非总是如此。在jasper报告中执行以下代码时会发生此问题。我该如何解决这个问题?

    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap space  
        JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(purchasingList);
        JasperPrint jasperPrint = JasperFillManager.fillReport(in, params, datasource);

        if (view) {// using a JDialog a preview of the print is showed.
             new Shows().showJasper(jasperPrint, "Invoice No:" + invoiceNo);
        }

        final JRPrintServiceExporter exporter = new JRPrintServiceExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
//      exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
        exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.TRUE);
        exporter.exportReport();

2 个答案:

答案 0 :(得分:1)

您可以使用JVM的-Xmx选项。 使用更多堆内存启动应用程序 e.g。

      java -Xmx512M YourClass

答案 1 :(得分:1)

简单的解决方案是使用-Xmx JVM选项来增加堆大小。但是,你可以做多少次/多少是有限的。

如果您已经使用了无法接受的大量内存,则需要查看生成报告的方式。特别是,您可能需要将报表拆分为较小的报表。