OutOfMemoryException при экспорте большого PDF

Обсуждение Stimulsoft Reports.JAVA
Ответить
grayroof
Сообщения: 2
Зарегистрирован: 23 май 2024, 08:28

OutOfMemoryException при экспорте большого PDF

Сообщение grayroof »

Добрый день!
Мы формируем платежные документы в виде PDF
при формировании PDF на 2000 страниц, наше приложение падает с ошибкой переполнения heap (OutOfMemoryException). На данный момент ограничение стоит в 8Гб.
Подскажите, пожалуйста, какие требования к серверу, который делает эту операцию? Сколько необходимо памяти для реализации нашей задачи?

Шаблон отчета во вложении. Возможно, вы сможете предложить альтернативную компоновку для менее ресурсоемкого экспорта в PDF. Или, быть может, предложите более оптимальный источник (на данный момент мы используем json, который формирует другой сервис).

код, выполняющий экспорт:

report = StiSerializeManager.deserializeReport(reportStream);
report.getDictionary().getDatabases().clear();
report.getDictionary().getDatabases().add(jsonDatabase);
report.setCalculationMode(StiCalculationMode.Interpretation);
report.Render(false);
report.exportDocument(StiExportFormat.Pdf, exportService, file, exportSettings, null);

библиотека: 'com.stimulsoft:stimulsoft-reports-libs:2024.2.2'

кстати, обратили внимание на то, что после генерации файла, СтимулСофт не освобождает неиспользуемую память. Нам приходится использовать напрямую сборщик мусора (System.gc()), что является плохой практикой. Ведутся ли в этом направлении какие-то работы, возможны ли оптимизации в ближайших релизах?

Спасибо.

С уважением, Маргарита
Вложения
Report_UPD.mrt
(685.07 КБ) 19 скачиваний
Report_short_PD.mrt
(669.03 КБ) 19 скачиваний
С уважением, Маргарита Шаймиева
Vadim
Сообщения: 111
Зарегистрирован: 04 апр 2013, 12:26

Re: OutOfMemoryException при экспорте большого PDF

Сообщение Vadim »

Здравствуйте.

Вы можете установить оптимизацию по памяти - отчет будет генерироваться медленнее, но расходовать меньше оперативной памяти.
Используйте свойство report.setReportCacheMode(StiReportCacheMode.On или StiReportCacheMode.Auto)
grayroof
Сообщения: 2
Зарегистрирован: 23 май 2024, 08:28

Re: OutOfMemoryException при экспорте большого PDF

Сообщение grayroof »

Мы попробовали StiReportCacheMode.On

памяти действительно потребляет меньше. Однако теперь пишет ошибку: Unable to access image with URL: resource://Image2
и не выводит картинку в футере сформированного PDF. файл с изображением в ресурсах имеется, и если отключить кэшмод, то изображение прекрасно выводится в футере документа

для кэшмода как-то по-другому нужно ресурс для изображения указывать?
С уважением, Маргарита Шаймиева
Aleksey
Сообщения: 2912
Зарегистрирован: 22 апр 2010, 06:57

Re: OutOfMemoryException при экспорте большого PDF

Сообщение Aleksey »

Здравствуйте,

Нужно дополнительное время для анализа проблемы.

Спасибо.
Vadim
Сообщения: 111
Зарегистрирован: 04 апр 2013, 12:26

Re: OutOfMemoryException при экспорте большого PDF

Сообщение Vadim »

Здравствуйте.
Пришлите пожалуйста полный стек ошибки.
Ответить