Garbage collector
- Oyun Geliştirme kursu
- Uzman
- Ders 7/47
- 4 dk
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 temizleyebilirGC 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
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
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
System.____.Collect();
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ı |