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.

Reply via email to