2009-10-19 60 views
1

如何使用JRSwapFileVirtualizer在Java碧玉报告碧玉报道,这是我使用的代码..如何使用JRSwapFileVirtualizer在Java

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),和创建的文件是空的。

+0

你不是已经问了几乎相同的问题吗?您可以自行发布该问题的答案,也可以等到有人回答。不要在同一问题上泛滥多个问题的页面 – jitter 2009-10-19 14:20:35

回答

6

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

试着这么做,

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

希望工程:-)

欢呼声......

+0

当我使用此代码时,它工作正常。问题是当我用40000记录以xls格式创建报告时,它会给我一个堆内存错误。 – 2014-05-13 10:23:07

+0

“F://”是你碧玉的路径吗?或者你的excel是在哪里生成的? – 2016-03-02 17:57:09