在我要打印的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();
答案 0 :(得分:1)
您可以使用JVM的-Xmx
选项。
使用更多堆内存启动应用程序
e.g。
java -Xmx512M YourClass
答案 1 :(得分:1)
简单的解决方案是使用-Xmx JVM选项来增加堆大小。但是,你可以做多少次/多少是有限的。
如果您已经使用了无法接受的大量内存,则需要查看生成报告的方式。特别是,您可能需要将报表拆分为较小的报表。