On Thursday, 9 October 2014 at 16:22:52 UTC, Andrei Alexandrescu
wrote:
To clarify: calling GC.free does remove the root, correct?
Not before it creates one. When I mean "avoid creating new GC
roots" I
mean "no GC activity at all other than extending existing
chunks"
That's interesting. So GC.malloc followed by GC.free does
actually affect things negatively?
Yes and quite notably so as GC.malloc can potentially trigger
collection. With concurrent GC collection is not a disaster but
it still affects the latency and should be avoided.
Also let's note that extending existing chunks may result in
new allocations.
Yes. But as those chunks never get free'd it comes to O(1)
allocation count over process lifetime with most allocations
happening during program startup / warmup.
Don has mentioned this as one of important points during his
DConf 2014 talk but it probably didn't catch as much attention as
it should.