CodeBlanks Logo Icon CodeBlanks

Garbage collector

C# GC'nin nasıl çalıştığını ve tahsis maliyetini öğrenirsin.

Garbage collector nedir?

C# programında artık kullanılmayan nesneler için bellek otomatik olarak geri alınır. Bu işi yapan yapıya garbage collector (GC) denir. Bir nesnenin hiçbir referansı kalmadığında GC onu temizleyebilir.

Nesne kasa = new Nesne(); // tahsis
kasa = null;              // artik referans yok
// GC bu nesneyi temizleyebilir

GC sayesinde belleği elle boşaltmak gerekmez.

Tahsis maliyeti

Yeni bir nesne oluşturmak bellekte yer ayırma yani tahsis (allocation) demektir. Her tahsis, GC'nin çalışma ihtimalini artırır ve toplama anında küçük takılmalar olabilir. Bu yüzden her karede yeni nesne üretmekten kaçınılır.

void Update()
{
    // her karede tahsis GC baskisini artirir
    int[] dizi = new int[8];
}

Az tahsis yapan oyun daha akıcı çalışır.

Uygulama Tahsis sayacını tut

BellekTakibi sınıfında islem adında bir metin alanını "Tahsis" ve nesneSayisi adında bir tam sayı alanını 3 değeriyle tanımla. Start metodu içinde nesneSayisi değerini iki artır ve Debug.Log ile "Toplam nesne: " metnini nesneSayisi ile birleştirerek yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class BellekTakibi : MonoBehaviour
{
    // islem adli metin alanini "Tahsis", nesneSayisi adli tam sayi alanini 3 degeriyle tanimla

    void Start()
    {
        // nesneSayisi degerini iki artir
        // "Toplam nesne: " + nesneSayisi biciminde yazdir
    }
}

Örnek çözüm

Player.cs
using UnityEngine;

public class BellekTakibi : MonoBehaviour
{
    string islem = "Tahsis";
    int nesneSayisi = 3;

    void Start()
    {
        nesneSayisi = nesneSayisi + 2;
        Debug.Log("Toplam nesne: " + nesneSayisi);
    }
}

Beklenen çıktı

Toplam nesne: 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir nesne ne zaman GC tarafından temizlenebilir?

  • Her karede otomatik olarak
  • Script derlenirken
  • GameObject sahneye eklenirken
  • Hiçbir referansı kalmadığında Doğru cevap

Açıklama: GC yalnızca artık hiçbir referansı olmayan nesneleri temizler; erişilebilir nesnelere dokunmaz.

2 GC toplamasını elle tetikle

Soru
    System.____.Collect();
Cevap
    System.GC.Collect();

Açıklama: GC sınıfı System ad alanı içindedir; System.GC.Collect() ile toplama elle tetiklenebilir.

3 GC terimleri

Kavram Anlamı
GC (Garbage Collector) Belleği geri toplayan yapı
Tahsis Yeni nesne için bellek ayırma
Toplama GC'nin temizleme geçişi
Referans Nesneyi gösteren bağlantı

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