【问题标题】:java.lang.OutOfMemoryError: Java heap space in JasperReportsjava.lang.OutOfMemoryError:JasperReports 中的 Java 堆空间
【发布时间】:2011-12-26 00:29:22
【问题描述】:

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

事件派发期间发生异常: java.lang.OutOfMemoryError:Java 堆空间
        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();

【问题讨论】:

标签: java swing jasper-reports


【解决方案1】:

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

java -Xmx512M YourClass

【讨论】:

【解决方案2】:

简单的解决方案是使用 -Xmx JVM 选项来增加堆大小。但是,您可以执行此操作的频率/次数是有限制的。

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

【讨论】:

  • 非常感谢您的信息。我还在,你能告诉我如何拆分报告吗?我也想在双击时运行我的 jar。那么在哪里以及如何使用Xmx
猜你喜欢
  • 2021-09-09
  • 2016-04-17
  • 1970-01-01
  • 2011-10-27
  • 2011-05-03
  • 2014-04-13
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多