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 был еще одним очком. Виртуализатор предназначен для систем без доступа к диску. Объекты страницы отчета сжимаются довольно хорошо, так что вы можете делать большие отчеты, если у вас приличный объем кучи.