Creating a garbage-collected environment that supports real-time on modern parallel platforms is notoriously hard, especially if real-time entails lock-freedom. I will present and compare three alternative designs for a highly-responsive, concurrent, lock-free, and low-overhead real-time garbage collector. Next, a simple and effective compiler optimization aimed at reducing the overhead of memory barriers will be presented. Finally, if time allows, I will introduce our formalization of lock-freedom and lock-free supporting systems.
All our designs are adequate for modern languages such as C# or Java. We have implemented them on top of the Bartok compiler and runtime for C# and measurements demonstrate high responsiveness (a factor of a 100 better than previously published real-time systems), virtually no pause times, good mutator utilization, and acceptable overheads.