Just a side note:
In .NET world one just have to be aware of possible GC caveats while writing a high-loaded code. It is very easy to write an innocent-looking code that will stress the memory management system badly, while change in just one line of that code might decrease time spent in GC from 20% of execution time to less than 1%. Note that modern implementation of .NET GC can run in background most of the time significantly reducing the the application threads latency.