CodeBlanks Logo Icon CodeBlanks

GC nedir?

Çöp toplayıcının temel amacını öğrenirsin.

GC nedir?

Çöp toplayıcı (GC), programın artık erişemediği heap belleğini otomatik olarak geri kazanır. Go'da free çağrısı yoktur; bir nesneye hiçbir kökten (global değişkenler, goroutine yığınları, yazmaçlar) ulaşılamıyorsa GC onu toplar.

func yeni() *Dugum {
    d := &Dugum{}  // heap'e kaçar
    return d
}

p := yeni()
p = nil  // artık erişilemez → bir sonraki GC'de toplanır

Go'nun GC'si eşzamanlı ve düşük gecikmelidir: duraklamalar genellikle milisaniyenin altındadır.

Yığın mı heap mi?

Yalnızca heap belleği GC'ye yük bindirir. Fonksiyon içinde kalan ve dışarı kaçmayan değerler yığında tutulur; fonksiyon dönünce bedavaya silinir. Derleyici hangisinin nereye gideceğine kaçış analiziyle karar verir. Daha az heap ayırma = daha az GC çalışması.

Uygulama GC sayısı

runtime.ReadMemStats ile NumGC değerini oku, runtime.GC() çağır ve tekrar oku. Sayının arttığını (sonra > once) yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "runtime"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "runtime"
)

func main() {
    var a, b runtime.MemStats
    runtime.ReadMemStats(&a)
    runtime.GC()
    runtime.ReadMemStats(&b)
    fmt.Println(b.NumGC > a.NumGC)
}

Beklenen çıktı

true

Soru ve cevaplar

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

1 Bir nesnenin toplanabilmesi için ne gerekir?

  • Fonksiyonun bitmesi
  • Hiçbir kökten ulaşılamaması Doğru cevap
  • free ile işaretlenmesi
  • nil atanmış olması

Açıklama: GC erişilebilirliğe bakar; nil atamak ancak son referans buysa nesneyi erişilemez yapar.

2 GC'yi elle tetikle

Soru
runtime.____()  // genellikle gerekmez
Cevap
runtime.GC()  // genellikle gerekmez

Açıklama: runtime.GC() bir çöp toplama döngüsünü zorlar; ölçüm ve test dışında nadiren kullanılır.

3 Bellek kavramları

Kavram Anlamı
Kök (root) Global ve yığın referansları
Heap GC'nin yönettiği bellek
Yığın Fonksiyonla birlikte silinir
Erişilemez nesne Toplanır

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