如何选择和配置JasperReports虚拟器?

Wal*_*ett 3 performance jasper-reports

我们在JasperReports 3.7.0中使用了虚拟程序,以避免一些大型查询耗尽内存。在该主题上找到了一篇有用的文章,并且在《 JasperReports终极指南》中对虚拟器进行了简要描述,但这仅仅是一个开始。我试图找出哪种虚拟机是理想的,并选择了一种虚拟机,如何调整配置参数。任何人都可以在这个话题上提供一些智慧吗?

沃尔特·吉列特

jbi*_*del 5

JRFileVirtualizer是原始版本,但主要是概念证明(我在评估JR时编写; JR开发人员也已对其进行了修复)。它为每个虚拟页面创建一个单独的文件,这可能导致拥有大量临时文件。

我建议使用JRSwapFileVirtualizer,因为它只为报告创建一个文件。

JRSwapFileVirtualizer virtualizer = null;
try {
    JRSwapFile swapFile = new JRSwapFile("directory", 1024, 100);
    virtualizer = new JRSwapFileVirtualizer(50, swapFile, true);
    params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
    ...
    JasperPrinter printer = JasperFillManager.fillReport(report, params, dataSource);
    ...
}
finally {
    if (virtualizer != null) virtualizer.cleanup();
}
Run Code Online (Sandbox Code Playgroud)

这将使系统在处理完报表后删除交换文件,并将使用虚拟器保存50页以上的报表。

JRGzipVirtualizer是另一个poc虚拟器,用于没有磁盘访问权限的系统。报告页面对象的压缩效果很好,因此,如果堆内存大小合适,您仍然可以制作一些大型报告。