On 15/08/2011 09:33, Ludo Brands wrote:
So far I have been concentrating on the memory usage before and after closing the 450 files. I'm now concentrating more on what increases when unload/load the 450 files since that would really be the "bad" memory.


So I did another test.

I added at the end of SynEdit. destroy:
  GetMemoryManager(m);
  debugln(['****************** ',m.GetFPCHeapStatus().CurrHeapUsed])

That would show any memory allocated by pascal code. (but not memory that qt or w32 keep for some reason (even though the reason might be missing release calls by the pascal code...))

The initial sizes are matching the measurements taken by process-explorer (w32)

41870000 open lazarus, with about a dozen units - close one unit, to trigger the output
198591312  open  450 univint - close one unit, to trigger the output
 63014880  close all 450 univint  => ok so some meory was kept

193982864 open 450 univint - close one unit, to trigger the output => hey we are even lower than last tim
 62963664   close all 450 univint => no extra memory kept on 2nd run

194002192 open again
 63734976 close again
193996224 open
 63027440 close

So that means:
- there may be memory allocated by the widgetset; some of this may not be returned (and heaptrc would not report this as leak) IF some of this isn not returned, then this might be an issue in Lazarus/LCL, BUT it could also be an issue of the widgetset itself.

- A huge amount of memory is allocated by pascal code, via the memory manager.
- Most of it is returned correctly.
- A certain amount is allocated and kept => but it does not increase


Those tests were done using heaptrc


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to