Am also wondering (I have no experience on that matter) how .NET performs in terms of GC as I remember at some point they introduced a threaded GC that dropped the stop-the-world approach and perform garbage collection in dedicated threads. Anyone got some insights?
If you're using "background GC" (new default), they are doing GC in multiple steps, by running part of GC work in another thread - there are still parts which require suspension of managed threads. Here's some more insight: