Generation 0 is full
AppDomain unloading or CLR shutdown
Explicit calls to Garbage Collector collect method
Generation 1 is full
Used for deterministically cleaning up the object
Depends on the object finalize method
Depends on the object implementing IDisposable interface
Can be used with value type as well
It uses a fix quota of memory for different generation
The algorithm used by GC is configurable by administrator
It is a self optimizing Garbage Collector
Calling GC.Collect will immediate start garbage Collection
Native win32 Handles
This eliminates the leakage of managed memory.
It takes away memory management task from developer.
It prevents leaking native Windows resources using finalize and dispose pattern
It takes away all kind of Windows resource management from developer
Here's an interesting quiz for you.