GC.GetGeneration Method (WeakReference)
[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]
Returns the current generation number of the target of a specified weak reference.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Parameters
- wo
- Type: System.WeakReference
A WeakReference that refers to the target object whose generation number is to be determined.
| Exception | Condition |
|---|---|
| ArgumentException |
Garbage collection has already been performed on wo. |
The following example demonstrates the use of the GetGeneration method to determine the age of a weak reference object.
using System; namespace GCGetGenerationWeakExample { public class MyGCCollectClass { private const long maxGarbage = 1000; static void Main() { // Create a strong reference to an object. MyGCCollectClass myGCCol = new MyGCCollectClass(); // Put some objects in memory. myGCCol.MakeSomeGarbage(); // Get the generation of managed memory where myGCCol is stored. Console.WriteLine("The object is in generation: {0}", GC.GetGeneration(myGCCol)); // Perform a full garbage collection. // Because there is a strong reference to myGCCol, it will // not be garbage collected. GC.Collect(); // Get the generation of managed memory where myGCCol is stored. Console.WriteLine("The object is in generation: {0}", GC.GetGeneration(myGCCol)); // Create a WeakReference to myGCCol. WeakReference wkref = new WeakReference(myGCCol); // Remove the strong reference to myGCCol. myGCCol = null; // Get the generation of managed memory where wkref is stored. Console.WriteLine("The WeakReference to the object is in generation: {0}", GC.GetGeneration(wkref)); // Perform another full garbage collection. // A WeakReference will not survive a garbage collection. GC.Collect(); // Try to get the generation of managed memory where wkref is stored. // Because it has been collected, an exception will be thrown. try { Console.WriteLine("The WeakReference to the object is in generation: {0}", GC.GetGeneration(wkref)); Console.Read(); } catch(Exception e) { Console.WriteLine("The WeakReference to the object has been garbage collected: '{0}'", e); Console.Read(); } } void MakeSomeGarbage() { Version vt; for(int i = 0; i < maxGarbage; i++) { // Create objects and release them to fill up memory // with unused objects. vt = new Version(); } } } }
Windows 8 Consumer Preview, Windows Server 8 Beta, Windows 7, Windows Server 2008 SP2, Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.