GC Klas

Definitie

Hiermee bepaalt u de garbagecollector van het systeem, een service die automatisch ongebruikt geheugen terugvordert.

public ref class GC abstract sealed
public ref class GC sealed
public static class GC
public sealed class GC
type GC = class
Public Class GC
Public NotInheritable Class GC
Overname
GC

Voorbeelden

In het volgende voorbeeld worden verschillende GC-methoden gebruikt om informatie over het genereren en geheugen op te halen over een blok ongebruikte objecten en deze af te drukken naar de console. De ongebruikte objecten worden vervolgens verzameld en de resulterende geheugentotalen worden weergegeven.

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

let maxGarbage = 1000

type MyGCCollectClass() =
    member _.MakeSomeGarbage() =
        for _ = 1 to maxGarbage do
            // Create objects and release them to fill up memory with unused objects.
            Version() |> ignore

[<EntryPoint>]
let main _ =
    let myGCCol = MyGCCollectClass()

    // Determine the maximum number of generations the system
    // garbage collector currently supports.
    printfn $"The highest generation is {GC.MaxGeneration}"

    myGCCol.MakeSomeGarbage()

    // Determine which generation myGCCol object is stored in.
    printfn $"Generation: {GC.GetGeneration myGCCol}"

    // Determine the best available approximation of the number
    // of bytes currently allocated in managed memory.
    printfn $"Total Memory: {GC.GetTotalMemory false}"

    // Perform a collection of generation 0 only.
    GC.Collect 0

    // Determine which generation myGCCol object is stored in.
    printfn $"Generation: {GC.GetGeneration myGCCol}"

    printfn $"Total Memory: {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.
    printfn $"Generation: {GC.GetGeneration myGCCol}"
    printfn $"Total Memory: {GC.GetTotalMemory false}"

    0
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

Opmerkingen

Zie Aanvullende API-opmerkingen voor GC voor meer informatie over deze API.

Eigenschappen

Name Description
MaxGeneration

Hiermee haalt u het maximum aantal generaties op dat het systeem momenteel ondersteunt.

Methoden

Name Description
AddMemoryPressure(Int64)

Informeert de runtime van een grote toewijzing van onbeheerd geheugen waarmee rekening moet worden gehouden bij het plannen van garbagecollection.

AllocateArray<T>(Int32, Boolean)

Wijst een matrix toe.

AllocateUninitializedArray<T>(Int32, Boolean)

Wijst een matrix toe tijdens het overslaan van nul-initialisatie, indien mogelijk.

CancelFullGCNotification()

Hiermee wordt de registratie van een garbagecollectionmelding geannuleerd.

Collect()

Dwingt een onmiddellijke garbagecollection van alle generaties.

Collect(Int32, GCCollectionMode, Boolean, Boolean)

Dwingt een garbagecollection af van generatie 0 tot en met een opgegeven generatie, op een moment dat is opgegeven door een GCCollectionMode waarde, met waarden die aangeven of de verzameling moet worden geblokkeerd en gecomprimeerd.

Collect(Int32, GCCollectionMode, Boolean)

Dwingt een garbagecollection van generatie 0 tot en met een opgegeven generatie af, op een tijdstip dat is opgegeven door een GCCollectionMode waarde, met een waarde die aangeeft of de verzameling moet worden geblokkeerd.

Collect(Int32, GCCollectionMode)

Dwingt een garbagecollection van generatie 0 tot en met een opgegeven generatie af, op een tijdstip dat is opgegeven door een GCCollectionMode waarde.

Collect(Int32)

Dwingt een onmiddellijke garbagecollection van generatie 0 tot en met een opgegeven generatie.

CollectionCount(Int32)

Retourneert het aantal keren dat garbagecollection heeft plaatsgevonden voor de opgegeven generatie van objecten.

EndNoGCRegion()

Hiermee wordt de modus geen GC-regiolatentie beƫindigd.

GetAllocatedBytesForCurrentThread()

Hiermee wordt het totale aantal bytes opgehaald dat is toegewezen aan de huidige thread sinds het begin van de levensduur.

GetConfigurationVariables()

Hiermee haalt u de configuraties op die door de garbagecollector worden gebruikt.

GetGCMemoryInfo()

Hiermee haalt u geheugengegevens over garbagecollection op.

GetGCMemoryInfo(GCKind)

Hiermee haalt u geheugengegevens over garbagecollection op.

GetGeneration(Object)

Retourneert het huidige generatienummer van het opgegeven object.

GetGeneration(WeakReference)

Retourneert het huidige generatienummer van het doel van een opgegeven zwakke verwijzing.

GetTotalAllocatedBytes(Boolean)

Hiermee haalt u het aantal bytes op dat gedurende de levensduur van het proces is toegewezen. De geretourneerde waarde bevat geen systeemeigen toewijzingen.

GetTotalMemory(Boolean)

Haalt de heapgrootte op, exclusief fragmentatie. Als de totale grootte van de GC-heap bijvoorbeeld 100 mb is en fragmentatie, dus ruimte die wordt gebruikt door vrije objecten, 40 mb in beslag neemt, rapporteert deze API 60 mb. Een parameter geeft aan of deze methode een kort interval kan wachten voordat het wordt geretourneerd, zodat het systeem afval kan verzamelen en objecten kan voltooien.

GetTotalPauseDuration()

Hiermee haalt u de totale hoeveelheid tijd op die is onderbroken in GC sinds het begin van het proces.

KeepAlive(Object)

Verwijst naar het opgegeven object, waardoor het niet in aanmerking komt voor garbagecollection vanaf het begin van de huidige routine tot het punt waar deze methode wordt aangeroepen.

RefreshMemoryLimit()

Hiermee geeft u de garbagecollector de opdracht om zichzelf opnieuw te configureren door de verschillende geheugenlimieten op het systeem te detecteren.

RegisterForFullGCNotification(Int32, Int32)

Hiermee geeft u op dat er een melding voor de garbagecollection moet worden gegenereerd wanneer de voorwaarden de volledige garbagecollection bevorderen en wanneer de verzameling is voltooid.

RegisterNoGCRegionCallback(Int64, Action)

Registreert een callback die moet worden aangeroepen wanneer een bepaalde hoeveelheid geheugen wordt toegewezen in de geen GC-regio.

RemoveMemoryPressure(Int64)

Informeert de runtime dat onbeheerd geheugen is vrijgegeven en dat er geen rekening meer moet worden gehouden bij het plannen van garbagecollection.

ReRegisterForFinalize(Object)

Vraagt dat het systeem de finalizer aanroept voor het opgegeven object waarvoor SuppressFinalize(Object) eerder is aangeroepen.

SuppressFinalize(Object)

Vraagt dat de algemene taalruntime de finalizer voor het opgegeven object niet aanroept.

TryStartNoGCRegion(Int64, Boolean)

Pogingen om garbagecollection niet toe te laten tijdens de uitvoering van een kritiek pad als er een opgegeven hoeveelheid geheugen beschikbaar is en bepaalt of de garbagecollector een volledige blokkerende garbagecollection uitvoert als er in eerste instantie onvoldoende geheugen beschikbaar is.

TryStartNoGCRegion(Int64, Int64, Boolean)

Pogingen om garbagecollection tijdens de uitvoering van een kritiek pad te weigeren als er een opgegeven hoeveelheid geheugen beschikbaar is voor de grote object-heap en de kleine object-heap, en bepaalt of de garbagecollector een volledige blokkerende garbagecollection uitvoert als er in eerste instantie onvoldoende geheugen beschikbaar is.

TryStartNoGCRegion(Int64, Int64)

Pogingen om garbagecollection tijdens de uitvoering van een kritiek pad te weigeren als er een opgegeven hoeveelheid geheugen beschikbaar is voor de grote object-heap en de kleine object heap.

TryStartNoGCRegion(Int64)

Pogingen om garbagecollection niet toe te laten tijdens de uitvoering van een kritiek pad als er een opgegeven hoeveelheid geheugen beschikbaar is.

WaitForFullGCApproach()

Retourneert de status van een geregistreerde melding om te bepalen of een volledige garbagecollection door de algemene taalruntime binnenkort wordt geblokkeerd.

WaitForFullGCApproach(Int32)

Retourneert, in een opgegeven time-outperiode, de status van een geregistreerde melding om te bepalen of een volledige garbagecollection door de algemene taalruntime binnenkort wordt geblokkeerd.

WaitForFullGCApproach(TimeSpan)

Retourneert, in een opgegeven time-outperiode, de status van een geregistreerde melding om te bepalen of een volledige garbagecollection door de algemene taalruntime binnenkort wordt geblokkeerd.

WaitForFullGCComplete()

Retourneert de status van een geregistreerde melding om te bepalen of een volledige, blokkerende garbagecollection door de algemene taalruntime is voltooid.

WaitForFullGCComplete(Int32)

Retourneert, in een opgegeven time-outperiode, de status van een geregistreerde melding om te bepalen of een volledige garbagecollection wordt geblokkeerd door algemene taal die de runtime heeft voltooid.

WaitForFullGCComplete(TimeSpan)

Retourneert de status van een geregistreerde melding over of een blokkerende garbagecollection is voltooid. Kan voor onbepaalde tijd wachten op een volledige verzameling.

WaitForPendingFinalizers()

De huidige thread wordt onderbroken totdat de thread die de wachtrij met finalizers verwerkt, die wachtrij heeft geleegd.

Van toepassing op

Zie ook