GC.GetGeneration Method
.NET Framework 1.1
Returns the current generation number of an object.
Overload List
Returns the current generation number of the specified object.
[Visual Basic] Overloads Public Shared Function GetGeneration(Object) As Integer
[C#] public static int GetGeneration(object);
[C++] public: static int GetGeneration(Object*);
[JScript] public static function GetGeneration(Object) : int;
Returns the current generation number of the target of a specified weak reference.
[Visual Basic] Overloads Public Shared Function GetGeneration(WeakReference) As Integer
[C#] public static int GetGeneration(WeakReference);
[C++] public: static int GetGeneration(WeakReference*);
[JScript] public static function GetGeneration(WeakReference) : int;
Example
[Visual Basic, C#, C++] Note This example shows how to use one of the overloaded versions of GetGeneration. For other examples that might be available, see the individual overload topics.
[Visual Basic] Imports System Namespace GCGetGenerationWeakExample Class MyGCCollectClass Private maxGarbage As Long = 1000 Public Shared Sub Main() ' Create a strong reference to an object. Dim myGCCol As 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. Dim wkref As New WeakReference(myGCCol) ' Remove the strong reference to myGCCol. myGCCol = Nothing ' 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 e As Exception Console.WriteLine("The WeakReference to the object " & _ "has been garbage collected: '{0}'", e) Console.Read() End Try End Sub Sub MakeSomeGarbage() Dim vt As Version Dim i As Integer For i = 0 To maxGarbage - 1 ' Create objects and release them to fill up memory ' with unused objects. vt = New Version Next i End Sub End Class End Namespace [C#] 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(); } } } } [C++] #using <mscorlib.dll> using namespace System; __gc class MyGCCollectClass { static const long maxGarbage = 1000; public: 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(); } } }; int 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(S"The object is in generation: {0}", __box(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(S"The object is in generation: {0}", __box( GC::GetGeneration(myGCCol))); // Create a WeakReference to myGCCol. WeakReference* wkref = new WeakReference(myGCCol); // Remove the strong reference to myGCCol. myGCCol = 0; // Get the generation of managed memory where wkref is stored. Console::WriteLine(S"The WeakReference to the object is in generation: {0}", __box( 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(S"The WeakReference to the object is in generation: {0}", __box( GC::GetGeneration(wkref))); Console::Read(); } catch (Exception* e) { Console::WriteLine(S"The WeakReference to the object has been garbage collected: ' {0}'", e); } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.