所以,问题是当我们在JasperReport对话框中显示用户创建的文档时。用户可以按下打印图标并将其发送到打印机。
它似乎在所有三个层次上都占用了客户端计算机上太多的资源:创建报告,在屏幕上显示报告,并将其发送到打印机。一个例子是AMD Duron 800 AMD,内存256MB,所以我们需要看看是否可以做一些优化,以获得更好的用户体验。
在拥有2 2GHz处理器和1 1GB内存的“普通”计算机上,它也会占用大量的资源,所以我需要看看是否有一个选项可以调优JasperReport以减少对资源的占用。
发布于 2009-01-23 14:09:20
过度使用子报表可能会增加报表的资源需求。每个子报表都会在填充期间派生自己的线程。此外,如果您使用的是scriptlet或helpers类,请确保它们创建的所有资源都得到了适当的清理。还要确保您使用的是最新的JR包。
一个音符。JR包括一组虚拟化器。填充报表时,会将整个已填充报表创建为一个对象(JasperPrint)。根据报表中的页数,此对象可能会变得非常大。可以将虚拟器配置为在达到设置的分页阈值时写入文件系统。
通常,这会减少总体内存使用量,但会增加填充时间。一个包含可能是gzip virtualizer,它不是写入文件系统,而是使用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中,可以在选项->设置中配置虚拟化器。
我希望这能对你有所帮助。
卢克
发布于 2009-01-23 10:56:38
贾斯珀报告只是一个jar,所以你需要更具体:你是在网络应用程序中运行JasperReports (在Tomcat、Glassfish、JBoss等上),还是在iReport中运行?
如果您在应用程序服务器上运行它,我能想到的最明显的事情就是确保您使用了正确的报表编译器,即JDT编译器。一定要确保你没有使用beanshell编译器。它像地狱一样慢。
https://stackoverflow.com/questions/472522
复制相似问题