我们在JasperReports 3.7.0中使用虚拟器,以避免一些大型查询耗尽内存。在这个主题上找到了一个helpful article,并且在JasperReports的终极指南中有一个关于虚拟化器的简要描述,但这只是一个开始。我试图找出哪个虚拟化器是理想的,并选择了一个,如何调整配置参数。那里的任何人都有一些关于这个主题的智慧吗?
Walter Gillett
答案 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.虚拟器适用于没有磁盘访问的系统。报表页面对象压缩得很好,所以如果你有一个不错的堆内存大小,你仍然可以做一些大的报告。