GC Sınıf

Tanım

Kullanılmayan belleği otomatik olarak geri alan bir hizmet olan sistem atık toplayıcısını denetler.

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

Örnekler

Aşağıdaki örnek, kullanılmayan bir nesne bloğu hakkında oluşturma ve bellek bilgilerini almak ve konsola yazdırmak için çeşitli GC yöntemleri kullanır. Kullanılmayan nesneler daha sonra toplanır ve sonuçta elde edilen bellek toplamları görüntülenir.

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

Açıklamalar

Bu API hakkında daha fazla bilgi için bkz. GC için ek API açıklamaları.

Özellikler

MaxGeneration

Sistemin şu anda desteklediği en fazla nesil sayısını alır.

Yöntemler

AddMemoryPressure(Int64)

Çalışma zamanına, atık toplamayı zamanlarken dikkate alınması gereken büyük bir yönetilmeyen bellek ayırmasını bildirir.

AllocateArray<T>(Int32, Boolean)

Bir dizi ayırır.

AllocateUninitializedArray<T>(Int32, Boolean)

Mümkünse sıfır başlatmayı atlarken bir dizi ayırır.

CancelFullGCNotification()

Çöp toplama bildiriminin kaydını iptal eder.

Collect()

Tüm nesillerin hemen çöp toplamaya zorlar.

Collect(Int32)

0. nesilden belirtilen bir nesile kadar hemen çöp toplamaya zorlar.

Collect(Int32, GCCollectionMode)

Bir değer tarafından GCCollectionMode belirtilen bir zamanda, 0. nesilden belirtilen bir nesile kadar atık toplamayı zorlar.

Collect(Int32, GCCollectionMode, Boolean)

Atık toplamayı nesil 0'dan belirli bir nesile, bir GCCollectionMode değer tarafından belirtilen bir zamanda, toplamanın engellenip engellenmeyeceğini belirten bir değerle zorlar.

Collect(Int32, GCCollectionMode, Boolean, Boolean)

Atık toplamayı nesil 0'dan belirli bir nesile, bir GCCollectionMode değer tarafından belirtilen bir zamanda, koleksiyonun engellenip sıkıştırılmayacağını belirten değerlerle zorlar.

CollectionCount(Int32)

Belirtilen nesne oluşturma işlemi için çöp toplama işleminin kaç kez gerçekleştiğini döndürür.

EndNoGCRegion()

GC bölgesi gecikme modunu sona erdirir.

GetAllocatedBytesForCurrentThread()

Kullanım ömrünün başlangıcından bu yana geçerli iş parçacığına ayrılan toplam bayt sayısını alır.

GetConfigurationVariables()

Çöp toplayıcı tarafından kullanılan yapılandırmaları alır.

GetGCMemoryInfo()

Çöp toplama bellek bilgilerini alır.

GetGCMemoryInfo(GCKind)

Çöp toplama bellek bilgilerini alır.

GetGeneration(Object)

Belirtilen nesnenin geçerli nesil numarasını döndürür.

GetGeneration(WeakReference)

Belirtilen zayıf başvurunun hedefinin geçerli nesil numarasını döndürür.

GetTotalAllocatedBytes(Boolean)

İşlemin ömrü boyunca ayrılan bayt sayısını alır. Döndürülen değer herhangi bir yerel ayırma içermez.

GetTotalMemory(Boolean)

Parçalanma hariç yığın boyutunu alır. Örneğin, toplam GC yığın boyutu 100 mb ve parçalanma, yani boş nesnelerin kapladığı alan 40 mb'ı kaplarsa, bu API 60 mb'ı bildirir. Parametre, sistemin çöp toplamasına ve nesneleri sonlandırmasına izin vermek için bu yöntemin geri dönmeden önce kısa bir süre bekleyip bekleyemeyeceğini gösterir.

GetTotalPauseDuration()

İşlemin başlangıcından bu yana GC'de duraklatılan toplam süreyi alır.

KeepAlive(Object)

Belirtilen nesneye başvurur, bu da geçerli yordamın başlangıcından bu yöntemin çağrıldığı noktaya kadar çöp toplama için uygun değildir.

RefreshMemoryLimit()

Çöp Toplayıcı'ya sistemdeki çeşitli bellek sınırlarını algılayarak kendisini yeniden yapılandırmasını bildirir.

RegisterForFullGCNotification(Int32, Int32)

Koşullar tam çöp toplamayı tercih ettiğinde ve toplama tamamlandığında bir çöp toplama bildiriminin tetiklenmesi gerektiğini belirtir.

RegisterNoGCRegionCallback(Int64, Action)

GC olmayan bölgede belirli bir bellek miktarı ayrıldığında çağrılacak bir geri çağırma kaydeder.

RemoveMemoryPressure(Int64)

Çalışma zamanına, yönetilmeyen belleğin serbest bırakıldığını ve atık toplamayı zamanlarken artık hesaba katılmaması gerektiğini bildirir.

ReRegisterForFinalize(Object)

Sistemin daha önce çağrılan belirtilen nesne SuppressFinalize(Object) için sonlandırıcıyı çağırmasını istemektedir.

SuppressFinalize(Object)

Ortak dil çalışma zamanının belirtilen nesne için sonlandırıcıyı çağırmama isteğinde bulunur.

TryStartNoGCRegion(Int64)

Belirtilen miktarda bellek varsa, kritik bir yolun yürütülmesi sırasında çöp toplamaya izin vermemeye çalışır.

TryStartNoGCRegion(Int64, Boolean)

Belirli bir bellek miktarı varsa kritik bir yolun yürütülmesi sırasında çöp toplamaya izin vermemeye çalışır ve başlangıçta yeterli bellek yoksa çöp toplayıcının tam bir engelleme çöp toplaması yapıp yapmadığı denetler.

TryStartNoGCRegion(Int64, Int64)

Büyük nesne yığını ve küçük nesne yığını için belirtilen miktarda bellek varsa, kritik bir yolun yürütülmesi sırasında çöp toplamaya izin vermemeye çalışır.

TryStartNoGCRegion(Int64, Int64, Boolean)

Büyük nesne yığını ve küçük nesne yığını için belirtilen miktarda bellek varsa kritik bir yolun yürütülmesi sırasında çöp toplamaya izin vermemeye çalışır ve başlangıçta yeterli bellek yoksa çöp toplayıcının tam engelleme çöp toplaması yapıp yapmadığı denetler.

WaitForFullGCApproach()

Ortak dil çalışma zamanı tarafından çöp toplamayı engelleyen tam bir bildirim olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCApproach(Int32)

Belirtilen zaman aşımı süresinde, ortak dil çalışma zamanı tarafından çöp toplamayı engelleyen tam bir bildirim olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCApproach(TimeSpan)

Belirtilen zaman aşımı süresinde, ortak dil çalışma zamanı tarafından çöp toplamayı engelleyen tam bir bildirim olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCComplete()

Ortak dil çalışma zamanı tarafından çöp toplamayı engelleyen tam bir bildirimin tamamlanıp tamamlanmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCComplete(Int32)

Belirtilen zaman aşımı süresinde, çalışma zamanının tamamladığı ortak dile göre çöp toplamayı engelleyen tam bir bildirim olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCComplete(TimeSpan)

Engelleyici çöp toplama işleminin tamamlanıp tamamlanmadığına ilişkin kayıtlı bildirimin durumunu döndürür. Tam koleksiyon için süresiz olarak bekleyebilir.

WaitForPendingFinalizers()

Sonlandırıcı kuyruğu işleyen iş parçacığı bu kuyruğu boşaltana kadar geçerli iş parçacığını askıya alır.

Şunlara uygulanır

Ayrıca bkz.