如何在Java中将JRSwapFileVirtualizer用于jasper报告,这是我使用的代码。

JRSwapFileVirtualizer virtualizer = null;
virtualizer = new JRSwapFileVirtualizer(10000, new JRSwapFile("F://", 1000, 1000), false);
param.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

xmlDataSource = new JRXmlDataSource(reportFile,"/table/tr");
jasperPrint = JasperFillManager.fillReport(jasperpath, param, xmlDataSource);


仍然我得到堆空间错误(OutOfMemeoryException),并且创建的文件为空。

最佳答案

JRSwapFileVirtualizer的构造函数的第一个参数是在将报告的各个部分存储在虚拟内存(磁盘)中之前将存储在主内存(RAM)中的最大报告页数。因此,如果您的报告页面大小不超过10000页,那么您将无法将它们存储在虚拟内存中,即使您编写了虚拟程序代码,也实际上并未使用此功能。

尝试类似的东西,

JRSwapFileVirtualizer virtualizer = null;
virtualizer = new JRSwapFileVirtualizer(3, new JRSwapFile("F://", 2048, 1024), false);
param.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);


希望它能工作:-)

干杯...

10-06 09:25