[fpc-pascal] Heavy heap fragmentation issue
Martok
listbox at martoks-place.de
Sun Jun 2 18:49:31 CEST 2019
Hi all,
I'm having a problem here in a sequential image processing application that
seems to test a particularly bad operation mode for the RTL heap manager (on
Windows, but I don't think this matters here).
The work load looks like this: load "normal sized" image, do some processing,
calculate a few values, create thumbnail in memory, next. By "normal sized" I
mean something like 35MB uncompressed (regular DSLR resolution) and smaller.
It's threaded code, but I'm describing the single worker operation here.
This appears to trigger insane memory fragmentation: after execution on 40 test
files, I'm left with 250MB working set, while GetHeapStatus only reports 600k
used (which seems correct, my data structures add up to 500k). This is never
released to the OS. In fact, I've had to set the LAA flag just so that the
program can work on the real data at all, with some 2.6GB working set for 1.07MB
of used memory.
Is there any tuning option that could use maybe fix that? Some growing or
reallocating flag or something?
As a quick test, I've tried my partial port of FastMM4 which works just fine, no
fragmentation and peaks at 40MB used memory, which fits with the largest image.
But this is such a reproducible test case, maybe there is something that can be
done to improve the RTL MM?
--
Regards,
Martok
More information about the fpc-pascal
mailing list