On Mon, 27 Dec 2021, zeljko wrote:
Hi all,
fpc-3.2.2, lazarus trunk...found that sqldbrestdispatcher does not free some
unused resources, so sqldbrestserver memory alloc grows and after few
thousand connections eats more than 1GB of memory.
Just found in TSQLDBRestDispatcher.HandleResourceRequest that
H: TSQLDBRestDBHandler is created for each request but freed when dispatcher
is destroyed. So, dispatcher in this case can contain thousands of
TSQLDBRestDBHandler unused components (could not find that dispatcher reuse
any of this).
I've added H.Free at last place in finally section and it seem that memory
does not grow too much at all (still grows but slower, probably there's still
unused resources around). Solution would be to reuse TSQLDBRestDBHandler's or
free them. Pls look at
https://forum.lazarus.freepascal.org/index.php/topic,51938.msg382021.html#msg382021
Forum is down, but I distinctly remember fixing this memleak.
It was not on my main development machine, but in a Windows VM.
Probably I forgot to commit that at the time :/
I applied a fix (free the handler), and fixed some compiler hints/warnings as
well.
I did a test, and I can't reproduce memleaks with the current demo
application (the -m option exists for this very purpose), but that
doesn't mean there are no memleaks left, there are many different execution
paths :/
Michael.
--
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus