Ah Haskell, the more I read about you the more impressed, curious, and scared I am. This is interesting and I wonder if things will start moving towards this approach as we near the scalability issues of 8-16 core laptops, desktops, and server architectures.
It looks at first glance like, while there are fewer periods where the whole system is stopped, those periods are substantially longer. Why would this be the case? Was the "old" generation previously being collected every time?<p>The pause is still very short; it doesn't look like it will cause problems for anything but the most time-critical software. Still, it's an interesting difference.
An interesting approach: giving each thread its own "young generation" sub-heap, so transient objects can be disposed of without coordination from other threads / CPUs and their cache pages.