Fil’s Unbelievable Garbage Collector
Fil’s Unbelievable Garbage Collector Fil-C uses a parallel concurrent on-the-fly grey-stack Dijkstra accurate non-moving garbage collector called FUGC (Fil’s Unbelievable Garbage Collector). You can find the source code for the collector itself in fugc.c, though be warned, that code cannot possibly work without lots of support logic in the rest of the runtime and in the compiler. Let’s break down FUGC’s features: Parallel: marking and sweeping happen in multiple threads, in parallel. The more cores you have, the faster the collector finishes. Concurrent: marking and sweeping happen on some threads other than the mutator threads (i.e. your program’s threads). Mutator threads don’t have to stop and wait for the collector. The interaction between the collector thread and mutator threads is…