Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training,
learning paths, books, tutorials, and more.

Chapter 12. Disposal and Garbage Collection

Some objects require explicit teardown code to release
resources such as open files, locks, operating system handles, and unmanaged
objects. In .NET parlance, this is called disposal, and
it is supported through the IDisposable
interface. The managed memory occupied by unused objects must also be
reclaimed at some point; this function is known as garbage collection and is performed by
the CLR.

Disposal differs from garbage collection in that disposal is usually
explicitly instigated; garbage collection is totally automatic. In other
words, the programmer takes care of such things as releasing file handles,
locks, and operating system resources while the CLR takes care of releasing
memory.

This chapter discusses both disposal and garbage collection, also
describing C# finalizers and the pattern by which they can provide a backup
for disposal. Lastly, we discuss the intricacies of the garbage collector
and other memory management options.

IDisposable, Dispose, and Close

The .NET Framework defines a special interface for types
requiring a tear-down method:

public interface IDisposable
{
void Dispose();
}

C#’s using statement provides a
syntactic shortcut for calling Dispose
on objects that implement IDisposable,
using a try/finally block. For example: