How to avoid GC pressure in C# and .NET
Garbage collection occurs when the system is low on available physical memory or the GC.Collect() method is called explicitly in your application code. Objects that are no longer in use or are inaccessible from the root are candidates for garbage collection.
While the .NET garbage collector, or GC, is adept at reclaiming memory occupied by managed objects, there may be times when it comes under pressure, i.e., when it must devote more time to collecting such objects. When the GC is under pressure to clean up objects, your application will spend far more time garbage collecting than executing instructions.