İngilizce dilinde oku

Aracılığıyla paylaş


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.

C#
public static class GC
C#
public sealed 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.

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

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

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.