Memory issue
Hello,
I have a very large report which has memory issues.
It has a region in it's detail band which contains a few lines, labels
and dbtexts. The band has also a subreport which has a group
header,detail and footer band.
I have 5 dbcalc components in the footer section of the main report and 2
dbcalc components in the group footer of the subreport.
I have set the report's cachepages to false and disabled all the outline
settings.
The main report has around 1700 records which have about 30 subrecords
each.
When previewing the report I get a memory error around page 1000. (When I
check the memory size, it gets past 2 GB). If I close and free the form
containing the report, it falls back to 50 MB.
If I delete the dbcalc components, the memory reaches only 350MB for 1200
pages and there are no problems.
A problematic behaviour that I noticed is that the report clearly caches
the pages. Example:
I go to page 1000. The status says (calculating page...) and it takes a
while. Then I go to page 500 and it goes in an instant. I can navigate to
any page without waiting.
What should I do to work around this memory problem.
I can calculate the sums myself but it will really slow down the report
which is already slow. And there will surely be calculation and printing
problems.
I'm using Delphi 7.0 and Report Builder 9.01
Oracle database and ODAC components (TOraQuery and TOraDataSource)
I have a very large report which has memory issues.
It has a region in it's detail band which contains a few lines, labels
and dbtexts. The band has also a subreport which has a group
header,detail and footer band.
I have 5 dbcalc components in the footer section of the main report and 2
dbcalc components in the group footer of the subreport.
I have set the report's cachepages to false and disabled all the outline
settings.
The main report has around 1700 records which have about 30 subrecords
each.
When previewing the report I get a memory error around page 1000. (When I
check the memory size, it gets past 2 GB). If I close and free the form
containing the report, it falls back to 50 MB.
If I delete the dbcalc components, the memory reaches only 350MB for 1200
pages and there are no problems.
A problematic behaviour that I noticed is that the report clearly caches
the pages. Example:
I go to page 1000. The status says (calculating page...) and it takes a
while. Then I go to page 500 and it goes in an instant. I can navigate to
any page without waiting.
What should I do to work around this memory problem.
I can calculate the sums myself but it will really slow down the report
which is already slow. And there will surely be calculation and printing
problems.
I'm using Delphi 7.0 and Report Builder 9.01
Oracle database and ODAC components (TOraQuery and TOraDataSource)
This discussion has been closed.
Comments
1. First, as always I recommend upgrading to the latest version. At least
to RB 9.03. There have been many fixes since RB 9.01.
2. How are you determining the memory usage of ReportBuilder during
execution? Are you using a memory manager or the task manager in windows?
3. What do these reports consist of? Are there numerous large images on
each page? A report reaching 2 GB with only text on the pages is very
unlikely.
4. Are you loading this report from a template?
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
I am tracking the memory usage from Process Explorer (sysinternal.com)
The report consists of only text so there has to be something wrong.
I'm not loading the report from the template, it's embedded to the
application.
The upgrade to RB 9.03 is a minor (free) upgrade. There have been many
fixes since RB 9.01 including some memory leak fixes. Please upgrade your
version of ReportBuilder and see if this solves the problem.
Is the LookAhead property set to True on your DBCalc components? For RB 9,
we added a new caching system that enhances capability of a DBCalc and
TppVariable to make calculations in the FooterBand of a report with a
Dynamic detail band. This should however only cache a value on a page break
and only caches numerical values keeping the cache record relatively small.
If you replace your DBCalc components with TppVariables and perform the
calcuations manually are you still getting the memory issues?
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
instead of DBCalc components and nothing changed.
But I found something else. It's about the TExtraDevices component that
I'm using. When I remove the TExtraDevices component and run again, the
memory usage is back to normal.
So there is a problem with the Calc components and TExtraDevices??
Note: I posted a new message to Devices group. I thought I should
continue there..
I am not aware of any issues with the TExtraDevices component however you
may try contacting Waler support directly for a quicker response about this
issue. support@waler.com
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com