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

时间:2010-02-19 00:04:05

标签: performance jasper-reports

我们在JasperReports 3.7.0中使用虚拟器,以避免一些大型查询耗尽内存。在这个主题上找到了一个helpful article,并且在JasperReports的终极指南中有一个关于虚拟化器的简要描述,但这只是一个开始。我试图找出哪个虚拟化器是理想的,并选择了一个,如何调整配置参数。那里的任何人都有一些关于这个主题的智慧吗?

Walter Gillett

1 个答案:

答案 0 :(得分:4)

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();
}

这将使系统在完成报告后删除交换文件,并使用虚拟器保存超过50页的报告。

JRGzipVirtualizer是另一个p.o.c.虚拟器适用于没有磁盘访问的系统。报表页面对象压缩得很好,所以如果你有一个不错的堆内存大小,你仍然可以做一些大的报告。