GC.Collect GC.Collect GC.Collect GC.Collect Method

Definition

Erzwingt eine Garbage Collection.Forces garbage collection.

Überlädt

Collect() Collect() Collect() Collect()

Erzwingt eine sofortige Garbage Collection für alle Generationen.Forces an immediate garbage collection of all generations.

Collect(Int32) Collect(Int32) Collect(Int32) Collect(Int32)

Erzwingt eine sofortige Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation.Forces an immediate garbage collection from generation 0 through a specified generation.

Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode)

Erzwingt eine Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation zu einem durch einen GCCollectionMode-Wert angegebenen Zeitpunkt.Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value.

Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean)

Erzwingt eine Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation, angegeben durch jeweils einen GCCollectionMode-Wert und mit einem Wert, der angibt, ob die Auflistung blockieren soll.Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with a value specifying whether the collection should be blocking.

Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean)

Erzwingt eine Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation, angegeben durch jeweils einen GCCollectionMode-Wert und mit Werten, die angeben, ob die Auflistung blockieren und komprimieren soll.Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with values that specify whether the collection should be blocking and compacting.

Collect() Collect() Collect() Collect()

Erzwingt eine sofortige Garbage Collection für alle Generationen.Forces an immediate garbage collection of all generations.

public:
 static void Collect();
public static void Collect ();
static member Collect : unit -> unit
Public Shared Sub Collect ()

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie die Collect -Methode verwendet wird, um eine Auflistung für alle Arbeitsspeicher Generationen auszuführen.The following example demonstrates how to use the Collect method to perform a collection on all generations of memory. Der Code generiert eine Reihe von nicht verwendeten Objekten und ruft dann die Collect -Methode auf, um Sie aus dem Arbeitsspeicher zu bereinigen.The code generates a number of unused objects, and then calls the Collect method to clean them from memory.

using namespace System;

const int maxGarbage = 1000;

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;
   }
}

void main()
{
   // Put some objects in memory.
   MakeSomeGarbage();
   Console::WriteLine("Memory used before collection:       {0:N0}", 
                      GC::GetTotalMemory( false ) );
   
   // Collect all generations of memory.
   GC::Collect();
   Console::WriteLine("Memory used after full collection:   {0:N0}", 
                      GC::GetTotalMemory( true ) );
}
// The output from the example resembles the following:
//       Memory used before collection:       79,392
//       Memory used after full collection:   52,640
using System;

class MyGCCollectClass
{
   private const int maxGarbage = 1000;

   static void Main()
   {
      // Put some objects in memory.
      MyGCCollectClass.MakeSomeGarbage();
      Console.WriteLine("Memory used before collection:       {0:N0}", 
                        GC.GetTotalMemory(false));
      
      // Collect all generations of memory.
      GC.Collect();
      Console.WriteLine("Memory used after full collection:   {0:N0}", 
                        GC.GetTotalMemory(true));
   }

   static void MakeSomeGarbage()
   {
      Version vt;

      // Create objects and release them to fill up memory with unused objects.
      for(int i = 0; i < maxGarbage; i++) {
         vt = new Version();
      }
   }
}
// The output from the example resembles the following:
//       Memory used before collection:       79,392
//       Memory used after full collection:   52,640
Class MyGCCollectClass
     Private Const maxGarbage As Integer = 1000

     Shared Sub Main()
         'Put some objects in memory.
         MyGCCollectClass.MakeSomeGarbage()
         Console.WriteLine("Memory used before collection:       {0:N0}", 
                           GC.GetTotalMemory(False))

         'Collect all generations of memory.
         GC.Collect()
         Console.WriteLine("Memory used after full collection:   {0:N0}", 
                           GC.GetTotalMemory(True))
     End Sub

     Shared 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 
     End Sub
 End Class
' The output from the example resembles the following:
'       Memory used before collection:       79,392
'       Memory used after full collection:   52,640

Hinweise

Verwenden Sie diese Methode, um den gesamten Speicher freizugeben, auf den nicht zugegriffen werden kann.Use this method to try to reclaim all memory that is inaccessible. Sie führt eine blockierende Garbage Collection aller Generationen aus.It performs a blocking garbage collection of all generations.

Alle Objekte, unabhängig davon, wie lange Sie im Arbeitsspeicher waren, werden für die Sammlung berücksichtigt. Allerdings werden Objekte, auf die in verwaltetem Code verwiesen wird, nicht gesammelt.All objects, regardless of how long they have been in memory, are considered for collection; however, objects that are referenced in managed code are not collected. Verwenden Sie diese Methode, um zu erzwingen, dass das System die maximale Menge an verfügbarem Arbeitsspeicher zurückgibt.Use this method to force the system to try to reclaim the maximum amount of available memory.

Beginnend mit .NET Framework 4.5.1.NET Framework 4.5.1können Sie den großen Objekt Heap (Large Object Heap, Loh) komprimieren, indem Sie GCLargeObjectHeapCompactionMode.CompactOnce die GCSettings.LargeObjectHeapCompactionMode -Eigenschaft Collect auf festlegen, bevor Sie die-Methode aufrufen. Dies wird im folgenden Beispiel veranschaulicht.Starting with the .NET Framework 4.5.1.NET Framework 4.5.1, you can compact the large object heap (LOH) by setting the GCSettings.LargeObjectHeapCompactionMode property to GCLargeObjectHeapCompactionMode.CompactOnce before calling the Collect method, as the following example illustrates.

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();      
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()      
Siehe auch

Collect(Int32) Collect(Int32) Collect(Int32) Collect(Int32)

Erzwingt eine sofortige Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation.Forces an immediate garbage collection from generation 0 through a specified generation.

public:
 static void Collect(int generation);
public static void Collect (int generation);
static member Collect : int -> unit
Public Shared Sub Collect (generation As Integer)

Parameter

generation
Int32 Int32 Int32 Int32

Die Anzahl der ältesten Generation, für die die Garbage Collection durchgeführt werden soll.The number of the oldest generation to be garbage collected.

Ausnahmen

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie die Collect -Methode verwendet wird, um eine Auflistung auf einzelnen Arbeitsspeicher Ebenen auszuführen.The following example demonstrates how to use the Collect method to perform a collection on individual layers of memory. Der Code generiert eine Reihe von nicht verwendeten Objekten und ruft dann die Collect -Methode auf, um Sie aus dem Arbeitsspeicher zu bereinigen.The code generates a number of unused objects, and then calls the Collect method to clean them from memory.

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 ) );
}

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();
            }
        }
    }
}
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

Hinweise

Verwenden Sie diese Methode, um Arbeitsspeicher freizugeben, auf den nicht zugegriffen werden kann.Use this method to try to reclaim memory that is inaccessible. Durch die Verwendung dieser Methode ist jedoch nicht sichergestellt, dass der gesamte nicht zugängliche Speicher in der angegebenen Generation freigegeben wird.However, using this method does not guarantee that all inaccessible memory in the specified generation is reclaimed.

Wenn die Objekt Alterung implementiert ist, sammelt die Garbage Collector keine Objekte mit einer Generierungs Nummer, die höher als die angegebene Generation ist.If object aging is implemented, the garbage collector does not collect objects with a generation number that is higher than the specified generation. Wenn die Objekt Alterung nicht implementiert ist, berücksichtigt die Garbage Collector alle Objekte während des Garbage Collection.If object aging is not implemented, the garbage collector considers all objects during the garbage collection.

Verwenden Sie MaxGeneration die-Eigenschaft, um den maximalen gültigen Wert generation des-Parameters zu bestimmen.Use the MaxGeneration property to determine the maximum valid value of the generation parameter.

Verwenden Sie die-Version dieser Methode, die keine Parameter annimmt, um die Garbage Collector alle Objekte unabhängig von ihrer Generierung in Erwägung zu nehmen.To have the garbage collector consider all objects regardless of their generation, use the version of this method that takes no parameters. Verwenden Sie die-Methoden Überladung, damit GCCollectionMode das Garbage Collector Objekte auf GC.Collect(Int32, GCCollectionMode) der Grundlage einer Einstellung freigeben kann.To have the garbage collector reclaim objects based on a GCCollectionMode setting, use the GC.Collect(Int32, GCCollectionMode) method overload.

Siehe auch

Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode) Collect(Int32, GCCollectionMode)

Erzwingt eine Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation zu einem durch einen GCCollectionMode-Wert angegebenen Zeitpunkt.Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value.

public:
 static void Collect(int generation, GCCollectionMode mode);
public static void Collect (int generation, GCCollectionMode mode);
static member Collect : int * GCCollectionMode -> unit
Public Shared Sub Collect (generation As Integer, mode As GCCollectionMode)

Parameter

generation
Int32 Int32 Int32 Int32

Die Anzahl der ältesten Generation, für die die Garbage Collection durchgeführt werden soll.The number of the oldest generation to be garbage collected.

mode
GCCollectionMode GCCollectionMode GCCollectionMode GCCollectionMode

Ein Enumerationswert, der angibt, ob die Garbage Collection erzwungen (Default oder Forced) oder optimiert wird (Optimized).An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

Ausnahmen

generation ist nicht gültig.generation is not valid.

- oder --or- mode ist keiner der GCCollectionMode-Werte.mode is not one of the GCCollectionMode values.

Beispiele

Im folgenden Beispiel wird eine Garbage Collection für Objekte der Generation 2 Optimized mit der-Einstellung erzwungen.The following example forces a garbage collection for generation 2 objects with the Optimized setting.

using System;

class Program
{
    static void Main(string[] args)
    {
        GC.Collect(2, GCCollectionMode.Optimized);
    }
}
Class Program

    Public Shared Sub Main()
        GC.Collect(2, GCCollectionMode.Optimized)
    End Sub
End Class

Hinweise

Verwenden Sie mode den-Parameter, um anzugeben, ob Garbage Collection sofort oder nur dann erfolgen soll, wenn die Zeit zum Freigeben von Objekten optimal ist.Use the mode parameter to specify whether garbage collection should occur immediately or only if the time is optimal to reclaim objects. Durch die Verwendung dieser Methode wird nicht sichergestellt, dass der gesamte Speicherplatz in der angegebenen Generation nicht zugänglich ist.Using this method does not guarantee that all inaccessible memory in the specified generation is reclaimed.

Legen Sie die LatencyMode -Eigenschaft fest, um die Eindring Kraft Garbage Collection während kritischer Zeiträume in der Anwendung anzupassen.To adjust the intrusiveness of garbage collection during critical periods in your application, set the LatencyMode property.

Der-Garbage Collector sammelt keine-Objekte, deren Generierungs Nummer höher ist als generation durch den-Parameter angegeben.The garbage collector does not collect objects with a generation number higher than specified by the generation parameter. Verwenden Sie MaxGeneration die-Eigenschaft, um den maximalen gültigen generationWert von zu bestimmen.Use the MaxGeneration property to determine the maximum valid value of generation.

Verwenden Sie die-Version dieser Methode, die keine Parameter annimmt, um die Garbage Collector alle Objekte unabhängig von ihrer Generierung in Erwägung zu nehmen.To have the garbage collector consider all objects regardless of their generation, use the version of this method that takes no parameters.

Verwenden Sie die GC.Collect(Int32) -Methoden Überladung, damit das Garbage Collector Objekte bis zu einer angegebenen Generation von Objekten freigeben kann.To have the garbage collector reclaim objects up to a specified generation of objects, use the GC.Collect(Int32) method overload. Wenn Sie die maximale Generierung angeben, werden alle Objekte gesammelt.When you specify the maximum generation, all objects are collected.

Siehe auch

Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean) Collect(Int32, GCCollectionMode, Boolean)

Erzwingt eine Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation, angegeben durch jeweils einen GCCollectionMode-Wert und mit einem Wert, der angibt, ob die Auflistung blockieren soll.Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with a value specifying whether the collection should be blocking.

public:
 static void Collect(int generation, GCCollectionMode mode, bool blocking);
public static void Collect (int generation, GCCollectionMode mode, bool blocking);
static member Collect : int * GCCollectionMode * bool -> unit
Public Shared Sub Collect (generation As Integer, mode As GCCollectionMode, blocking As Boolean)

Parameter

generation
Int32 Int32 Int32 Int32

Die Anzahl der ältesten Generation, für die die Garbage Collection durchgeführt werden soll.The number of the oldest generation to be garbage collected.

mode
GCCollectionMode GCCollectionMode GCCollectionMode GCCollectionMode

Ein Enumerationswert, der angibt, ob die Garbage Collection erzwungen (Default oder Forced) oder optimiert wird (Optimized).An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

blocking
Boolean Boolean Boolean Boolean

true, um eine blockierende Garbage Collection auszuführen; false, um eine Garbage Collection im Hintergrund auszuführen, sofern möglich.true to perform a blocking garbage collection; false to perform a background garbage collection where possible.

Ausnahmen

generation ist nicht gültig.generation is not valid.

- oder --or- mode ist keiner der GCCollectionMode -Werte.mode is not one of the GCCollectionMode values.

Hinweise

In mode der folgenden Tabelle wird die Interaktion der Parameter blocking und zusammengefasst:The following table summarizes the interaction of the mode and blocking parameters:

mode blocking ist gleich true.blocking is true blocking ist gleich false.blocking is false
Forced oder DefaultForced or Default Eine blockierende Auflistung wird so schnell wie möglich ausgeführt.A blocking collection is performed as soon as possible. Wenn eine Hintergrund Auflistung ausgeführt wird und generation 0 oder 1 ist, löst die Collect(Int32, GCCollectionMode, Boolean) Methode sofort eine blockierende Auflistung aus und gibt zurück, wenn die Auflistung abgeschlossen ist.If a background collection is in progress and generation is 0 or 1, the Collect(Int32, GCCollectionMode, Boolean) method immediately triggers a blocking collection and returns when the collection is finished. Wenn eine Hintergrund Auflistung ausgeführt wird und generation 2 ist, wartet die Methode, bis die Hintergrund Auflistung abgeschlossen ist, löst eine blockierende Sammlung der Generation 2 aus und gibt dann zurück.If a background collection is in progress and generation is 2, the method waits until the background collection is finished, triggers a blocking generation 2 collection, and then returns. Eine Auflistung wird so schnell wie möglich ausgeführt.A collection is performed as soon as possible. Die Collect(Int32, GCCollectionMode, Boolean)-Methode fordert eine Hintergrundauflistung, ist jedoch nicht garantiert. Je nach den Umständen wird eine blockierende Auflistung möglicherweise weiterhin ausgeführt.The Collect(Int32, GCCollectionMode, Boolean) method requests a background collection, but this is not guaranteed; depending on the circumstances, a blocking collection may still be performed. Wenn eine Hintergrundauflistung bereits ausgeführt wird, gibt die Methode sofort zurück.If a background collection is already in progress, the method returns immediately.
Optimized Eine blockierende Auflistung kann ausgeführt werden, je nach Zustand des Garbage Collectors und des generation-Parameters.A blocking collection may be performed, depending on the state of the garbage collector and the generation parameter. Der Garbage Collector versucht, eine optimale Leistung bereitzustellen.The garbage collector tries to provide optimal performance. Eine Auflistung kann ausgeführt werden, je nach Zustand des Garbage Collectors.A collection may be performed, depending on the state of the garbage collector. Die Collect(Int32, GCCollectionMode, Boolean)-Methode fordert eine Hintergrundauflistung, ist jedoch nicht garantiert. Je nach den Umständen wird eine blockierende Auflistung möglicherweise weiterhin ausgeführt.The Collect(Int32, GCCollectionMode, Boolean) method requests a background collection, but this is not guaranteed; depending on the circumstances, a blocking collection may still be performed. Der Garbage Collector versucht, eine optimale Leistung bereitzustellen.The garbage collector tries to provide optimal performance. Wenn eine Hintergrundauflistung bereits ausgeführt wird, gibt die Methode sofort zurück.If a background collection is already in progress, the method returns immediately.

Wenn ein Aufruf Collect(Int32, GCCollectionMode, Boolean) der-Methode eine vollständige blockierende Garbage Collection durchführt, können Sie auch den großen Objekt Heap komprimieren, indem Sie die GCSettings.LargeObjectHeapCompactionMode - Collect Eigenschaft auf GCLargeObjectHeapCompactionMode.CompactOnce festlegen, bevor Sie die-Methode aufrufen.If a call to the Collect(Int32, GCCollectionMode, Boolean) method performs a full blocking garbage collection, you can also compact the large object heap by setting the GCSettings.LargeObjectHeapCompactionMode property to GCLargeObjectHeapCompactionMode.CompactOnce before calling the Collect method.

Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean) Collect(Int32, GCCollectionMode, Boolean, Boolean)

Erzwingt eine Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation, angegeben durch jeweils einen GCCollectionMode-Wert und mit Werten, die angeben, ob die Auflistung blockieren und komprimieren soll.Forces a garbage collection from generation 0 through a specified generation, at a time specified by a GCCollectionMode value, with values that specify whether the collection should be blocking and compacting.

public:
 static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting);
public static void Collect (int generation, GCCollectionMode mode, bool blocking, bool compacting);
static member Collect : int * GCCollectionMode * bool * bool -> unit
Public Shared Sub Collect (generation As Integer, mode As GCCollectionMode, blocking As Boolean, compacting As Boolean)

Parameter

generation
Int32 Int32 Int32 Int32

Die Anzahl der ältesten Generation, für die die Garbage Collection durchgeführt werden soll.The number of the oldest generation to be garbage collected.

mode
GCCollectionMode GCCollectionMode GCCollectionMode GCCollectionMode

Ein Enumerationswert, der angibt, ob die Garbage Collection erzwungen (Default oder Forced) oder optimiert wird (Optimized).An enumeration value that specifies whether the garbage collection is forced (Default or Forced) or optimized (Optimized).

blocking
Boolean Boolean Boolean Boolean

true, um eine blockierende Garbage Collection auszuführen; false, um eine Garbage Collection im Hintergrund auszuführen, sofern möglich.true to perform a blocking garbage collection; false to perform a background garbage collection where possible.

compacting
Boolean Boolean Boolean Boolean

true zum Komprimieren des kleinen Objektheaps; false, um nur Sweep durchzuführen.true to compact the small object heap; false to sweep only.

Hinweise

Wenn blocking istfalse, entscheidet der GC, ob ein Hintergrund oder eine blockierende Garbage Collection durchgeführt werden soll.If blocking is false, the GC decides whether to perform a background or a blocking garbage collection. Wenn compactingden Wert hat,führtereineblockierendeGarbageCollectionaus.trueIf compacting is true, it performs a blocking garbage collection.

Wenn compactingden Wert hat,komprimiertdieRuntimedenkleinenObjektHeap(SoH).trueIf compacting is true, the runtime compacts the small object heap (SOH). Der große Objekt Heap (Loh) wird nicht komprimiert, es sei GCSettings.LargeObjectHeapCompactionMode denn, die- GCLargeObjectHeapCompactionMode.CompactOnceEigenschaft ist auf festgelegt.The large object heap (LOH) is not compacted unless the GCSettings.LargeObjectHeapCompactionMode property is set to GCLargeObjectHeapCompactionMode.CompactOnce. Beachten Sie, dass dies alle blockierenden Garbage Collections umfasst, nicht nur vollständige blockierende Garbage Collections.Note that this includes all blocking garbage collections, not just full blocking garbage collections.

Sie können die Collect(Int32, GCCollectionMode, Boolean, Boolean) -Methode aufrufen, um den verwalteten Heap auf die kleinste mögliche Größe zu reduzieren, wie das folgende Code Fragment veranschaulicht.You can call the Collect(Int32, GCCollectionMode, Boolean, Boolean) method to reduce the managed heap to the smallest size possible, as the following code fragment illustrates.

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect(2, GCCollectionMode.Forced, true, true);
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect(2, GCCollectionMode.Forced, True, True)

Durch true die Angabe compacting von für das-Argument wird eine komprimierende, vollständige blockierende Garbage Collection garantiertSpecifying true for the compacting argument guarantees a compacting, full blocking garbage collection. Durch Festlegen GCSettings.LargeObjectHeapCompactionMode der- GCLargeObjectHeapCompactionMode.CompactOnce Eigenschaft auf wird sichergestellt, dass sowohl der Loh als auch der SoH komprimiert werden.Setting the GCSettings.LargeObjectHeapCompactionMode property to GCLargeObjectHeapCompactionMode.CompactOnce ensures that both the LOH and SOH are compacted.

Gilt für: