The GC (agian)

Guillaume Piolat first.last at gmail.com
Tue Nov 23 14:44:31 UTC 2021


On Saturday, 20 November 2021 at 13:48:44 UTC, JG wrote:
> (a) specify exactly when the GC should do a stop the world mark 
> and sweep (not when it feels like it when it needs to allocate 
> memory and perhaps through an API more pleasant than the 
> current, enable and disable mechanism);

GC.enable / GC.disable and manually provoking collections is only 
a quick fix.

The Right Way(tm) to go about it imho is to just have a smaller 
GC heap, that will reduce the maximum pause time (aka scanning) 
so that whatever happens your real-time system doesn't get 
encumbered by the GC.

How to get a small GC heap? With -profile=GC, pools, custom 
allocators, non-scannabled memory etc.
GC is actually pay as you go, the larger the heap the more you 
pay.
If you use very small amount of GC, disabling it or going 
-betterC will yield immeasurable gains, apart from memory usage.

Of course GC still doesn't work for fast callback that don't have 
the leisure to hold even a mutex, for those using deregistered 
thread and @nogc is necessary.





More information about the Digitalmars-d mailing list