Our project actively uses tasks. At the same time are about a thousand tasks. Memory consumption significantly exceeds the expected values. And I can't find the reasons.

I noticed that many (but not all) of the objects continue to exist and not be collected by the GC even if there is not a single reference to them. Even after forcing by GC.collect().

As far as I know vibe.d does not destroy the terminated task/fibers, but "caches" them for reuse.
Can the references to the objects to hang in the "cached" task stack or somewhere else? And how to fight with such references?