GC.MaxGeneration-Eigenschaft
Ruft die maximale Anzahl von Generationen ab, die das System gegenwärtig unterstützt.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared ReadOnly Property MaxGeneration As Integer
'Usage
Dim value As Integer
value = GC.MaxGeneration
public static int MaxGeneration { get; }
public:
static property int MaxGeneration {
int get ();
}
/** @property */
public static int get_MaxGeneration ()
public static function get MaxGeneration () : int
Eigenschaftenwert
Ein Wert zwischen 0 und der Höchstanzahl der unterstützten Generationen.
Hinweise
Die Generationzahl bzw. das Alter eines Objekts ist ein von der Implementierung definiertes relatives Maß für die Lebensdauer eines Objekts. Die zuletzt erstellen Objekte gehören der Generation 0 (null) an, und die ältesten Objekte gehören einer Generation an, die gleich oder kleiner als die von der MaxGeneration-Eigenschaft zurückgegebene Generation ist.
Der Garbage Collector geht davon aus, dass neuerer Speicher eher für eine Gargabe Collection infrage kommt als älterer Speicher. Der Garbage Collector steigert daher seine Leistungsfähigkeit, indem er bei jeder Freigabe von Speicher die Generationszahlen anpasst. Der Wert der MaxGeneration-Eigenschaft kann im Laufe der Zeit wachsen.
Wenn das Altern von Objekten implementiert ist, gibt die MaxGeneration-Eigenschaft die maximale vom System verwendete Generationszahl zurück, andernfalls gibt die Eigenschaft 0 (null) zurück.
Hinweise für Implementierer In der vorliegenden Implementierung ist der von der MaxGeneration-Eigenschaft zurückgegebene Wert während der Lebensdauer einer ausgeführten Anwendung garantiert konstant. Über die MaxGeneration-Eigenschaft kann der größtmögliche Wert ermittelt werden, der angegeben werden kann, wenn die Collect-Methode mit einem Generationsparameter aufgerufen wird.
Beispiel
Imports System
Namespace GCCollectInt_Example
Class MyGCCollectClass
Private maxGarbage As Long = 10000
Public Shared Sub Main()
Dim myGCCol As New MyGCCollectClass
'Determine the maximum number of generations the system
'garbage collector currently supports.
Console.WriteLine("The highest generation is {0}", GC.MaxGeneration)
myGCCol.MakeSomeGarbage()
'Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol))
'Determine the best available approximation of the number
'of bytes currently allocated in managed memory.
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False))
'Perform a collection of generation 0 only.
GC.Collect(0)
'Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol))
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False))
'Perform a collection of all generations up to and including 2.
GC.Collect(2)
'Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol))
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False))
Console.Read()
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
using System;
namespace GCCollectIntExample
{
class MyGCCollectClass
{
private const long maxGarbage = 1000;
static void Main()
{
MyGCCollectClass myGCCol = new MyGCCollectClass();
// Determine the maximum number of generations the system
// garbage collector currently supports.
Console.WriteLine("The highest generation is {0}", GC.MaxGeneration);
myGCCol.MakeSomeGarbage();
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
// Determine the best available approximation of the number
// of bytes currently allocated in managed memory.
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
// Perform a collection of generation 0 only.
GC.Collect(0);
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
// Perform a collection of all generations up to and including 2.
GC.Collect(2);
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
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();
}
}
}
}
using namespace System;
const long maxGarbage = 1000;
ref class MyGCCollectClass
{
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 = gcnew Version;
}
}
};
int main()
{
MyGCCollectClass^ myGCCol = gcnew MyGCCollectClass;
// Determine the maximum number of generations the system
// garbage collector currently supports.
Console::WriteLine( "The highest generation is {0}", GC::MaxGeneration );
myGCCol->MakeSomeGarbage();
// Determine which generation myGCCol object is stored in.
Console::WriteLine( "Generation: {0}", GC::GetGeneration( myGCCol ) );
// Determine the best available approximation of the number
// of bytes currently allocated in managed memory.
Console::WriteLine( "Total Memory: {0}", GC::GetTotalMemory( false ) );
// Perform a collection of generation 0 only.
GC::Collect( 0 );
// Determine which generation myGCCol object is stored in.
Console::WriteLine( "Generation: {0}", GC::GetGeneration( myGCCol ) );
Console::WriteLine( "Total Memory: {0}", GC::GetTotalMemory( false ) );
// Perform a collection of all generations up to and including 2.
GC::Collect( 2 );
// Determine which generation myGCCol object is stored in.
Console::WriteLine( "Generation: {0}", GC::GetGeneration( myGCCol ) );
Console::WriteLine( "Total Memory: {0}", GC::GetTotalMemory( false ) );
}
package GCCollectIntExample;
import System.* ;
class MyGCCollectClass
{
private static final long maxGarbage = 1000;
public static void main(String[] args)
{
MyGCCollectClass myGCCol = new MyGCCollectClass();
// Determine the maximum number of generations the system
// garbage collector currently supports.
Console.WriteLine("The highest generation is {0}",
System.Convert.ToString(GC.get_MaxGeneration()));
myGCCol.MakeSomeGarbage();
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}",
System.Convert.ToString(GC.GetGeneration(myGCCol)));
// Determine the best available approximation of the number
// of bytes currently allocated in managed memory.
Console.WriteLine("Total Memory: {0}",
System.Convert.ToString(GC.GetTotalMemory(false)));
// Perform a collection of generation 0 only.
GC.Collect(0);
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}",
System.Convert.ToString(GC.GetGeneration(myGCCol)));
Console.WriteLine("Total Memory: {0}",
System.Convert.ToString(GC.GetTotalMemory(false)));
// Perform a collection of all generations up to and including 2.
GC.Collect(2);
// Determine which generation myGCCol object is stored in.
Console.WriteLine("Generation: {0}",
System.Convert.ToString(GC.GetGeneration(myGCCol)));
Console.WriteLine("Total Memory: {0}",
System.Convert.ToString(GC.GetTotalMemory(false)));
Console.Read();
} //main
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();
}
} //MakeSomeGarbage
} //MyGCCollectClass
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0