GC Klass

Definition

Styr systemets skräpinsamlare, en tjänst som automatiskt återtar oanvänt minne.

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
Arv
GC

Exempel

I följande exempel används flera GC-metoder för att hämta information om generering och minne om ett block med oanvända objekt och skriva ut det till konsolen. De oanvända objekten samlas sedan in och de resulterande minnessummorna visas.

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

Kommentarer

Mer information om det här API:et finns i Kompletterande API-kommentarer för GC.

Egenskaper

Name Description
MaxGeneration

Hämtar det maximala antalet generationer som systemet stöder för närvarande.

Metoder

Name Description
AddMemoryPressure(Int64)

Informerar körningen av en stor allokering av ohanterat minne som bör beaktas vid schemaläggning av skräpinsamling.

AllocateArray<T>(Int32, Boolean)

Allokerar en matris.

AllocateUninitializedArray<T>(Int32, Boolean)

Allokerar en matris medan nollinitiering hoppas över, om möjligt.

CancelFullGCNotification()

Avbryter registreringen av en skräpinsamlingsavisering.

Collect()

Tvingar fram en omedelbar skräpinsamling av alla generationer.

Collect(Int32, GCCollectionMode, Boolean, Boolean)

Tvingar fram en skräpinsamling från generation 0 via en angiven generation, vid en tidpunkt som anges av ett GCCollectionMode värde, med värden som anger om samlingen ska blockeras och komprimeras.

Collect(Int32, GCCollectionMode, Boolean)

Tvingar fram en skräpinsamling från generation 0 via en angiven generation, vid en tidpunkt som anges av ett GCCollectionMode värde, med ett värde som anger om samlingen ska blockeras.

Collect(Int32, GCCollectionMode)

Tvingar fram en skräpinsamling från generation 0 via en angiven generation, vid en tidpunkt som anges av ett GCCollectionMode värde.

Collect(Int32)

Tvingar fram en omedelbar skräpinsamling från generation 0 via en angiven generation.

CollectionCount(Int32)

Returnerar antalet gånger skräpinsamlingen har inträffat för den angivna genereringen av objekt.

EndNoGCRegion()

Avslutar svarstidsläget för ingen GC-region.

GetAllocatedBytesForCurrentThread()

Hämtar det totala antalet byte som allokerats till den aktuella tråden sedan början av dess livslängd.

GetConfigurationVariables()

Hämtar de konfigurationer som används av skräpinsamlaren.

GetGCMemoryInfo()

Hämtar minnesinformation för skräpinsamling.

GetGCMemoryInfo(GCKind)

Hämtar minnesinformation för skräpinsamling.

GetGeneration(Object)

Returnerar det aktuella generationsnumret för det angivna objektet.

GetGeneration(WeakReference)

Returnerar det aktuella generationsnumret för målet för en angiven svag referens.

GetTotalAllocatedBytes(Boolean)

Hämtar ett antal byte som allokerats under processens livslängd. Det returnerade värdet innehåller inga inbyggda allokeringar.

GetTotalMemory(Boolean)

Hämtar heapstorleken exklusive fragmentering. Om den totala GC-heapstorleken till exempel är 100 mb och fragmentering, dvs. utrymme som tas upp av kostnadsfria objekt, tar upp 40 mb, skulle det här API:et rapportera 60 mb. En parameter anger om den här metoden kan vänta ett kort intervall innan den returneras, så att systemet kan samla in skräp och slutföra objekt.

GetTotalPauseDuration()

Hämtar den totala tiden som pausats i GC sedan processens början.

KeepAlive(Object)

Refererar till det angivna objektet, vilket gör det inte berättigat för skräpinsamling från början av den aktuella rutinen till den punkt där den här metoden anropas.

RefreshMemoryLimit()

Instruerar skräpinsamlaren att konfigurera om sig själv genom att identifiera systemets olika minnesgränser.

RegisterForFullGCNotification(Int32, Int32)

Anger att ett skräpinsamlingsmeddelande ska genereras när villkor gynnar fullständig skräpinsamling och när samlingen har slutförts.

RegisterNoGCRegionCallback(Int64, Action)

Registrerar ett återanrop som ska anropas när en viss mängd minne allokeras i ingen GC-region.

RemoveMemoryPressure(Int64)

Informerar körningen om att ohanterat minne har släppts och inte längre behöver beaktas vid schemaläggning av skräpinsamling.

ReRegisterForFinalize(Object)

Begär att systemet anropar finaliseraren för det angivna objektet som SuppressFinalize(Object) tidigare har anropats.

SuppressFinalize(Object)

Begär att den vanliga språkkörningen inte anropar finaliseraren för det angivna objektet.

TryStartNoGCRegion(Int64, Boolean)

Försöker att inte tillåta skräpinsamling under körningen av en kritisk sökväg om en angiven mängd minne är tillgängligt och styr om skräpinsamlaren gör en fullständig blockering av skräpinsamling om det inte finns tillräckligt med minne från början.

TryStartNoGCRegion(Int64, Int64, Boolean)

Försöker att inte tillåta skräpinsamling under körningen av en kritisk sökväg om en angiven mängd minne är tillgängligt för den stora objekthögen och den lilla objekthögen, och styr om skräpinsamlaren utför en fullständig blockering av skräpinsamling om det inte finns tillräckligt med minne från början.

TryStartNoGCRegion(Int64, Int64)

Försöker att inte tillåta skräpinsamling under körningen av en kritisk sökväg om en angiven mängd minne är tillgängligt för den stora objekthögen och den lilla objekthögen.

TryStartNoGCRegion(Int64)

Försöker att inte tillåta skräpinsamling under körningen av en kritisk sökväg om en angiven mängd minne är tillgängligt.

WaitForFullGCApproach()

Returnerar statusen för ett registrerat meddelande för att avgöra om en fullständig, blockerande skräpinsamling av den gemensamma språkkörningen är nära förestående.

WaitForFullGCApproach(Int32)

Returnerar statusen för ett registrerat meddelande under en angiven tidsgräns för att avgöra om en fullständig, blockerande skräpinsamling av den gemensamma språkkörningen är nära förestående.

WaitForFullGCApproach(TimeSpan)

Returnerar statusen för ett registrerat meddelande under en angiven tidsgräns för att avgöra om en fullständig, blockerande skräpinsamling av den gemensamma språkkörningen är nära förestående.

WaitForFullGCComplete()

Returnerar statusen för ett registrerat meddelande för att avgöra om en fullständig, blockerande skräpinsamling av den gemensamma språkkörningen har slutförts.

WaitForFullGCComplete(Int32)

Returnerar statusen för ett registrerat meddelande under en angiven tidsgräns för att avgöra om en fullständig, blockerande skräpinsamling efter vanligt språk som körningen har slutfört.

WaitForFullGCComplete(TimeSpan)

Returnerar statusen för ett registrerat meddelande om huruvida en blockerande skräpinsamling har slutförts. Kan vänta på obestämd tid för en fullständig samling.

WaitForPendingFinalizers()

Pausar den aktuella tråden tills tråden som bearbetar kön med slutförare har tömt kön.

Gäller för

Se även