CodeBlanks Logo Icon CodeBlanks

Özet - Memory

Memory yönetimini bir özet görevle pekiştirirsin.

Bellek yönetimi özeti

Bellek yönetimi üç temel alışkanlık üzerine kurulur: gereksiz tahsisten kaçınmak, nesneleri yeniden kullanmak ve doğru tipi seçmek. GC temizliği otomatik yapar ama her tahsis onun işini artırır. Havuzlar, struct kullanımı ve parça parça yükleme belleği rahatlatır.

int yeniNesne = 2;
int yenidenKullanilan = 5;

Bu alışkanlıklar birlikte uygulandığında bellek sorunları azalır.

Uygulama Bellek özeti

BellekOzet sınıfında yontem adında bir metin alanını "Pooling", kazanc adında bir tam sayı alanını 5 ve kare adında bir tam sayı alanını tanımla. Awake metodu içinde yontem değerini "Struct" yap. Start metodu içinde Debug.Log ile "Yontem: ", yontem, " Kazanc: " ve kazanc parçalarını birleştirerek yazdır. Update metodu içinde kare sayacını her karede bir artır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class BellekOzet : MonoBehaviour
{
    // yontem adli metin alanini "Pooling", kazanc adli tam sayi alanini 5 degeriyle tanimla
    // kare adli tam sayi alanini tanimla

    void Awake()
    {
        // yontem degerini "Struct" yap
    }

    void Start()
    {
        // "Yontem: " + yontem + " Kazanc: " + kazanc biciminde yazdir
    }

    void Update()
    {
        // kare sayacini her karede bir artir
    }
}

Örnek çözüm

Player.cs
using UnityEngine;

public class BellekOzet : MonoBehaviour
{
    string yontem = "Pooling";
    int kazanc = 5;
    int kare;

    void Awake()
    {
        yontem = "Struct";
    }

    void Start()
    {
        Debug.Log("Yontem: " + yontem + " Kazanc: " + kazanc);
    }

    void Update()
    {
        kare++;
    }
}

Beklenen çıktı

Yontem: Struct Kazanc: 5

Soru ve cevaplar

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

1 Aşağıdakilerden hangisi bellek tahsisini artırır?

Player.cs
void Update()
{
    Nesne gecici = new Nesne();
}
  • Kullanılmayan nesnelerin referanslarını bırakmak
  • Update içinde her karede new ile nesne oluşturmak Doğru cevap
  • Nesneleri havuzdan almak
  • Küçük veriler için struct kullanmak

Açıklama: Her karede new ile nesne üretmek sürekli tahsis yapar; havuz, struct ve referans bırakma ise tahsisi azaltır.

2 Dizi tahsisini yaz

Soru
    GameObject[] kasaDizisi = new ____[5];
Cevap
    GameObject[] kasaDizisi = new GameObject[5];

Açıklama: Dizi tahsisinde tür adı tekrar yazılır; GameObject dizisi için new GameObject[5] kullanılır.

3 Bellek özeti tablosu

Kavram Anlamı
GC Kullanılmayan nesneleri temizler
Heap tahsisi new ile bellek ayırma
struct Değer tipi olarak saklanır
Object pooling Nesneleri yeniden kullanma yöntemi

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