Skip to main content

Garbage Collection

Short Introduction​

Garbage Collection (GC) in .NET automatically manages memory allocation and deallocation, freeing developers from manual memory management.

Official Definition​

Garbage Collection is an automatic memory management feature of .NET that periodically identifies and frees memory that is no longer being used by the application.

Usage​

// GC is automatic, but you can interact with it
public class ResourceIntensiveClass : IDisposable
{
private bool disposed = false;

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources
}
// Free unmanaged resources
disposed = true;
}
}

~ResourceIntensiveClass()
{
Dispose(false);
}
}

// Force garbage collection (generally not recommended)
GC.Collect();
GC.WaitForPendingFinalizers();

When to Use / When Not to Use​

Generally avoid manual GC calls except:

  • Memory-intensive applications
  • After large object disposal
  • Performance testing scenarios

Pros​

  • Automatic memory management
  • Prevents memory leaks
  • Optimized for application patterns

Cons​

  • Non-deterministic timing
  • Can cause pause times
  • Less control over memory layout