Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

GC.Collect-Methode (Int32)

Erzwingt eine sofortige Garbage Collection von Generation 0 (null) bis zu einer angegebenen Generation.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public static void Collect(
	int generation
)

Parameter

generation
Typ: System.Int32
Die älteste Generationszahl, für die die Garbage Collection ausgeführt werden kann.

AusnahmeBedingung
ArgumentOutOfRangeException

generation ist ungültig.

Mit dieser Methode kann versucht werden, den Speicher freizugeben, auf den nicht zugegriffen werden kann. Die Verwendung dieser Methode gewährleistet jedoch nicht, dass sämtlicher nicht zugänglicher Speicher in der angegebenen Generation freigegeben wird.

Wenn das Altern von Objekten implementiert ist, gibt der Garbage Collector keine Objekte mit einer höheren als der angegebenen Generationszahl frei. Wenn das Altern von Objekten nicht implementiert ist, berücksichtigt der Garbage Collector bei der Garbage Collection alle Objekte.

Verwenden Sie die MaxGeneration-Eigenschaft, um den größten gültigen Wert für den generation-Parameter zu bestimmen.

Verwenden Sie diese Methode in der Version ohne Parameter, wenn der Garbage Collector alle Objekte unabhängig von ihrer Generation berücksichtigen soll. Damit der Garbage Collector Objekte auf Grundlage einer GCCollectionMode-Einstellung freigibt, verwenden Sie die GC.Collect(Int32, GCCollectionMode)-Methodenüberladung.

Im folgenden Beispiel wird veranschaulicht, wie die Collect-Methode verwendet wird, um eine Garbage Collection für einzelne Speicherebenen durchzuführen. Der Code generiert eine Reihe nicht verwendeter Objekte und ruft dann die Collect-Methode auf, um diese Objekte aus dem Speicher zu löschen.


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


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft