所以,问题是我们在JasperReport Dialog中向用户创建的文档显示。用户可以按打印图标并将其发送到打印机。
在所有三个级别上,客户端的计算机上似乎占用了太多资源:创建报告,在屏幕上显示报告并将其发送到打印机。一个示例PC是AMD Duron 800MHz,具有256MB RAM,因此我们需要了解是否可以进行一些优化以获得更好的用户体验。
它还需要在具有2GHz处理器和1GB RAM的“普通”计算机上占用大量资源,因此我需要查看是否有一个选项可以调整JasperReport以减少对资源的影响。
答案 0 :(得分:5)
过度使用子报告会增加报告的资源需求。每个子报表在填充时间内产生自己的线程。此外,如果您正在使用scriptlet或帮助程序类,请确保正确清理它们创建的所有资源。还要确保您使用的是最新的JR软件包。
一个注意事项。 JR api包含一组虚拟器。填写报表时,整个填充的报表将创建为对象(JasperPrint)。根据报表中的页数,此对象可能会变得非常大。可以将虚拟器配置为在达到设置的页面阈值时写入文件系统。
通常,这会降低总体内存使用量,但会增加填充时间。一个包可能是gzip虚拟器,而不是写入文件系统,使用gzip压缩生成的对象。
以下是有关该主题的常见问题解答: http://community.jaspersoft.com/wiki/support-large-reports
它所引用的例子可以通过下载JR源获得。
http://sourceforge.net/project/showfiles.php?group_id=36382&package_id=28579
从高级视图来看,如果您在应用程序中运行此报告,则可以实例化虚拟器(此处是列出已知实现类的接口): http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRVirtualizer.html
然后在填充时使用引用:
JRDataSource ds = new JREmptyDataSource(10);
JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "tmp");
JasperPrint jasperPrint = fillReport(fileName, ds, virtualizer);
如果您在iReport中,可以在选项中配置虚拟器 - >设置。
我希望这有用。
路
答案 1 :(得分:1)
好的Jasper Reports只是一个jar,所以你需要更具体一点:你是在Web应用程序中运行JasperReports(在Tomcat,Glassfish,JBoss等)还是在iReport中运行它?
如果你在appserver中运行它,我能想到的最明显的事情是确保你使用正确的报告编译器,即JDT编译器。绝对要确保你没有使用teh beanshell编译器。它太慢了。