GC Kelas

Definisi

Mengontrol pengumpul sampah sistem, layanan yang secara otomatis mengklaim kembali memori yang tidak digunakan.

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

Contoh

Contoh berikut menggunakan beberapa metode GC untuk mendapatkan informasi pembuatan dan memori tentang blok objek yang tidak digunakan dan mencetaknya ke konsol. Objek yang tidak digunakan kemudian dikumpulkan, dan total memori yang dihasilkan ditampilkan.

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

Keterangan

Untuk informasi selengkapnya tentang API ini, lihat Keterangan API Tambahan untuk GC.

Properti

MaxGeneration

Mendapatkan jumlah maksimum generasi yang saat ini didukung sistem.

Metode

AddMemoryPressure(Int64)

Menginformasikan runtime alokasi besar memori tidak terkelola yang harus dipertimbangkan saat menjadwalkan pengumpulan sampah.

AllocateArray<T>(Int32, Boolean)

Mengalokasikan array.

AllocateUninitializedArray<T>(Int32, Boolean)

Mengalokasikan array saat melewati inisialisasi nol, jika memungkinkan.

CancelFullGCNotification()

Membatalkan pendaftaran pemberitahuan pengumpulan sampah.

Collect()

Memaksa pengumpulan sampah langsung dari semua generasi.

Collect(Int32)

Memaksa pengumpulan sampah langsung dari generasi 0 hingga generasi tertentu.

Collect(Int32, GCCollectionMode)

Memaksa pengumpulan sampah dari generasi 0 hingga generasi tertentu, pada waktu yang ditentukan oleh GCCollectionMode nilai.

Collect(Int32, GCCollectionMode, Boolean)

Memaksa pengumpulan sampah dari generasi 0 hingga generasi tertentu, pada waktu yang ditentukan oleh GCCollectionMode nilai, dengan nilai yang menentukan apakah koleksi harus diblokir.

Collect(Int32, GCCollectionMode, Boolean, Boolean)

Memaksa pengumpulan sampah dari generasi 0 hingga generasi tertentu, pada waktu yang ditentukan oleh GCCollectionMode nilai, dengan nilai yang menentukan apakah koleksi harus memblokir dan memampatkan.

CollectionCount(Int32)

Mengembalikan berapa kali pengumpulan sampah telah terjadi untuk pembuatan objek yang ditentukan.

EndNoGCRegion()

Mengakhiri mode latensi wilayah tanpa GC.

GetAllocatedBytesForCurrentThread()

Mendapatkan jumlah total byte yang dialokasikan ke utas saat ini sejak awal masa pakainya.

GetConfigurationVariables()

Mendapatkan konfigurasi yang digunakan oleh pengumpul sampah.

GetGCMemoryInfo()

Mendapatkan informasi memori pengumpulan sampah.

GetGCMemoryInfo(GCKind)

Mendapatkan informasi memori pengumpulan sampah.

GetGeneration(Object)

Mengembalikan jumlah generasi saat ini dari objek yang ditentukan.

GetGeneration(WeakReference)

Mengembalikan jumlah generasi saat ini dari target referensi lemah yang ditentukan.

GetTotalAllocatedBytes(Boolean)

Mendapatkan hitungan byte yang dialokasikan selama masa pakai proses. Nilai yang dikembalikan tidak menyertakan alokasi asli apa pun.

GetTotalMemory(Boolean)

Mengambil ukuran tumpukan tidak termasuk fragmentasi. Misalnya jika total ukuran timbunan GC adalah 100mb dan fragmentasi, yaitu, ruang yang diambil oleh objek bebas, membutuhkan waktu 40mb, API ini akan melaporkan 60mb. Parameter menunjukkan apakah metode ini dapat menunggu interval singkat sebelum kembali, untuk memungkinkan sistem mengumpulkan sampah dan menyelesaikan objek.

GetTotalPauseDuration()

Mendapatkan jumlah total waktu yang dijeda di GC sejak awal proses.

KeepAlive(Object)

Mereferensikan objek yang ditentukan, yang membuatnya tidak memenuhi syarat untuk pengumpulan sampah dari awal rutinitas saat ini ke titik di mana metode ini dipanggil.

RefreshMemoryLimit()

Menginstruksikan Pengumpul Sampah untuk mengonfigurasi ulang dirinya dengan mendeteksi berbagai batas memori pada sistem.

RegisterForFullGCNotification(Int32, Int32)

Menentukan bahwa pemberitahuan pengumpulan sampah harus dinaikkan ketika kondisi mendukung pengumpulan sampah penuh dan ketika pengumpulan telah selesai.

RegisterNoGCRegionCallback(Int64, Action)

Mendaftarkan panggilan balik untuk dipanggil ketika sejumlah memori dialokasikan di tidak ada wilayah GC.

RemoveMemoryPressure(Int64)

Menginformasikan runtime bahwa memori yang tidak terkelola telah dirilis dan tidak perlu lagi dipertanyakan saat menjadwalkan pengumpulan sampah.

ReRegisterForFinalize(Object)

Meminta agar sistem memanggil finalizer untuk objek yang ditentukan yang SuppressFinalize(Object) sebelumnya telah dipanggil.

SuppressFinalize(Object)

Meminta agar runtime bahasa umum tidak memanggil finalizer untuk objek yang ditentukan.

TryStartNoGCRegion(Int64)

Upaya untuk melarang pengumpulan sampah selama eksekusi jalur kritis jika jumlah memori tertentu tersedia.

TryStartNoGCRegion(Int64, Boolean)

Mencoba untuk melarang pengumpulan sampah selama eksekusi jalur kritis jika jumlah memori tertentu tersedia, dan mengontrol apakah pengumpul sampah melakukan pengumpulan sampah pemblokiran penuh jika tidak cukup memori yang awalnya tersedia.

TryStartNoGCRegion(Int64, Int64)

Upaya untuk melarang pengumpulan sampah selama eksekusi jalur kritis jika jumlah memori tertentu tersedia untuk tumpukan objek besar dan tumpukan objek kecil.

TryStartNoGCRegion(Int64, Int64, Boolean)

Upaya untuk melarang pengumpulan sampah selama eksekusi jalur kritis jika jumlah memori tertentu tersedia untuk tumpukan objek besar dan tumpukan objek kecil, dan mengontrol apakah pengumpul sampah melakukan pengumpulan sampah pemblokiran penuh jika memori tidak cukup pada awalnya tersedia.

WaitForFullGCApproach()

Mengembalikan status pemberitahuan terdaftar untuk menentukan apakah pengumpulan sampah penuh dan pemblokiran oleh runtime bahasa umum akan segera terjadi.

WaitForFullGCApproach(Int32)

Mengembalikan, dalam periode waktu habis yang ditentukan, status pemberitahuan terdaftar untuk menentukan apakah pengumpulan sampah penuh dan pemblokiran oleh runtime bahasa umum akan segera terjadi.

WaitForFullGCApproach(TimeSpan)

Mengembalikan, dalam periode waktu habis yang ditentukan, status pemberitahuan terdaftar untuk menentukan apakah pengumpulan sampah penuh dan pemblokiran oleh runtime bahasa umum akan segera terjadi.

WaitForFullGCComplete()

Mengembalikan status pemberitahuan terdaftar untuk menentukan apakah pengumpulan sampah penuh dan pemblokiran oleh runtime bahasa umum telah selesai.

WaitForFullGCComplete(Int32)

Mengembalikan, dalam periode waktu habis tertentu, status pemberitahuan terdaftar untuk menentukan apakah pengumpulan sampah penuh dan pemblokiran berdasarkan bahasa umum yang telah diselesaikan runtime bahasa umum.

WaitForFullGCComplete(TimeSpan)

Mengembalikan status pemberitahuan terdaftar tentang apakah pemblokiran pengumpulan sampah telah selesai. Mungkin menunggu tanpa batas waktu untuk koleksi lengkap.

WaitForPendingFinalizers()

Menangguhkan utas saat ini hingga utas yang memproses antrean finalizer telah mengkosongkan antrean tersebut.

Berlaku untuk

Lihat juga