Я не очень понимаюVital писал(а): Память занимается загруженной сборкой отчета. Выгрузить ее нельзя (можно вместе с доменом приложения).
Поэтому и нужно компилировать отчет на диск и потом грузить ее при помощи
StiReport.GetReportFromAssembly("Report.dll", true); В этом случае гарантируется однократная загрузка сборки
отчета в память.
- Запустил приложение. - "Съедено" 50 мб.
// !!! 100 записей = 10 страниц
- stiReport1 = StiReport.GetReportFromAssembly("Report.dll", true); - "Съедено" 80 мб.
- stiReport1.Dictionary.DataStore.Clear();
- stiReport1.RegData(dsWork);
- stiReport1.Render(false); - "Съедено" 81 мб.
// !!! 10000 записей = 1000 страниц
- stiReport1 = StiReport.GetReportFromAssembly("Report.dll", true); - "Съедено" 90 мб.
- stiReport1.Dictionary.DataStore.Clear(); - "Съедено" 90 мб.
- stiReport1.RegData(dsWork); - "Съедено" 90 мб.
- stiReport1.Render(false); - "Съедено" 280 мб.
Память отжирает (что логично) именно рендеринг, те самые "RenderedPages" и что-нибудь ещё по ходу...
А когда я третий раз запускаю обработчик
// !!! 100 записей = 10 страниц
- stiReport1 = StiReport.GetReportFromAssembly("Report.dll", true); - "Съедено" 280 мб.
- stiReport1.Dictionary.DataStore.Clear();
- stiReport1.RegData(dsWork);
- stiReport1.Render(false); - "Съедено" 280 мб.
Мне кажется, что память съедается в процecce рендеринга. Нет?
Но проблема в том, что не отдаёт её при, например, очередном вызове GetReportFromAssembly или Render...
Понял проблему(а может и не проблемуVital писал(а): 2. Так что там с экспортом в PDF ?
Извините, пропустили этот вопрос. Проверьте пожалуйста, если использовать вместо PDF скажем RTF будет ли повторяться проблема?
вызываю stiReport1.Design();
ничего не меняю, закрываю окно дизайнера.
экспорт ни в один формат уже не работает, видимо очистились результаты рендеринга.
может это и правильно, но не очень очевидно.
Спасибо.