title: Force .NET GC to compact or defragment generation 2 heap?
body: <p>We wrote a windows service by C# in .NET framework, after some hours we noticed that the size of heap generation 2 is growing unordinary. 
  Most of this space is free and dotMemory Profiler showed us that we have about 90% fragmentations on this generation.
  How can I enforce .NET GC to compact this space? It means that GC could free this space but It couldn't compact it for further usage.</p>