как использовать JRSwapFileVirtualizer для отчетов jasper в java

как использовать JRSwapFileVirtualizer для отчетов jasper в 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), и файл, который создается, пуст.


person stanley    schedule 19.10.2009    source источник
comment
Разве вы уже не задавали почти идентичный вопрос? Либо опубликуйте ответ на этот вопрос сами, либо подождите, пока кто-нибудь ответит. Не засоряйте страницу несколькими вопросами по одной и той же проблеме.   -  person jitter    schedule 19.10.2009


Ответы (1)


Первый параметр конструктора JRSwapFileVirtualizer — это максимальное количество страниц отчета, которые будут храниться в основной памяти (ОЗУ) до того, как разделы отчета будут сохранены в виртуальной памяти (на диске). Так что если размер страницы вашего отчета не превышает 10000 страниц, то вы не сможете хранить их в виртуальной памяти, и хоть вы и пишете код виртуализатора, вы на самом деле не используете эту красоту.

Попробуйте что-то вроде,

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

Надеюсь, что это работает :-)

ваше здоровье...

person Deger    schedule 26.02.2010
comment
Когда я использую этот код, он работает нормально. Проблема в том, что когда я создаю отчет в формате xls с записью 40000, он выдает ошибку кучи памяти. - person Keval Trivedi; 13.05.2014
comment
F:// это путь, где находится ваша яшма? или где был сгенерирован ваш excel? - person diego matos - keke; 02.03.2016