Programming for Garbage Collection

The .NET Framework's garbage collector manages the allocation and release of memory for your application. Each time you use the new operator to create an object, the runtime allocates memory for the object from the managed heap. As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. However, memory is not infinite. Eventually the garbage collector must perform a collection in order to free some memory. The garbage collector's optimizing engine determines the best time to perform a collection, based upon the allocations being made. When the garbage collector performs a collection, it checks for objects in the managed heap that are no longer being used by the application and performs the necessary operations to reclaim their memory.

This section describes how the garbage collector automatically manages the allocation and release of memory for the managed objects in your application. In addition, it describes the recommended design pattern to use to properly clean up any unmanaged resources that your application creates.

In This Section

Developer Backgrounds in Memory Management
Describes the adjustments developers, who have traditionally used Visual Basic, C++, and COM, should make when moving to managed code.
Finalize Methods and Destructors
Describes how Finalize methods and destructors allow an object to perform necessary cleanup operations before the garbage collector automatically reclaims the object's memory.
Cleaning Up Unmanaged Resources
Describes the recommended design pattern for cleaning up unmanaged resources. This section provides code examples for the following tasks:
Forcing a Garbage Collection
Describes how and when to force the garbage collector to perform a collection.

Related Sections

GC Class
Provides methods for interacting with the system garbage collector.
Object.Finalize Method
Allows an object to attempt to free resources and perform other cleanup operations before the garbage collector reclaims the object.
IDisposable Interface
Provides the functionality for a resource class.
Garbage Collection Technology Sample
Introduces the functionality of the .NET Framework garbage collector.