CodeBlanks Logo Icon CodeBlanks

GC temelleri

C# kursu · Uzman · Ders 1/47

Çöp toplayıcının (GC) nasıl çalıştığını ve nesilleri öğrenirsin.

Çöp toplayıcı nedir?

GC (garbage collector, çöp toplayıcı), .NET'te yönetilen belleği otomatik yöneten çalışma zamanı bileşenidir. Nesneleri ömürlerine göre üç nesle (generation) ayırır: Gen 0, Gen 1 ve Gen 2.

Yeni nesneler Gen 0'da başlar. Bir toplama sırasında hayatta kalırsa bir üst nesle terfi eder. Gen 2'deki nesneler uzun ömürlüdür ve seyrek toplanır; bu yaklaşım kısa ömürlü nesnelerin hızla geri kazanılmasını sağlar.

Toplama ve terfi

GC tetiklendiğinde önce Gen 0'ı toplar. Gen 0'da hayatta kalan nesneler Gen 1'e terfi eder. Bellek yeterli değilse Gen 1 ve Gen 2 de toplanır.

Bu yaklaşıma ephemeral (kısa ömürlü) toplama denir; maliyeti düşüktür çünkü çoğu nesne kısa ömürlüdür. Uzun ömürlü nesnelerden kaçınmak GC baskısını azaltır.

Uygulama Neslini yazdır

Bir object o = new object(); oluştur. int gen = GC.GetGeneration(o); ile neslini al. Console.WriteLine($"Nesil: {gen}"); ile yazdır.

Örnek çözümü göster
{gen}"); yaz.
Örnek çözüm:
using System;

class Program
{
    static void Main()
    {
        object o = new object();
        int gen = GC.GetGeneration(o);
        Console.WriteLine($"Nesil: {gen}");
    }
}

Kendini test et

  1. Yeni oluşturulan bir nesne hangi nesilde başlar?

    • Gen 2
    • Gen 0
    • Gen 1
    • Gen 3
    Cevabı göster

    Gen 0 — Doğru. Tüm yeni nesneler Gen 0'da başlar ve hayatta kalırsa terfi eder.

  2. Nesil bilgisini al

    int gen = GC.____(o);
    Cevabı göster
    int gen = GC.GetGeneration(o);
  3. Bir nesne Gen 0 toplamada hayatta kalırsa ne olur?

    • Silinir
    • Bellekten kaldırılır
    • Gen 1'e terfi eder
    • Hiçbir şey
    Cevabı göster

    Gen 1'e terfi eder — Doğru. Hayatta kalan nesneler bir üst nesle terfi eder.

Uzman bölümündeki tüm dersler