Çöp Toplama Nedir?
İngilizce: Garbage Collection
Yayın: · Son güncelleme:
Çöp Toplama Nedir? Kısaca
Çöp toplama (garbage collection), programın artık kullanmadığı bellek alanlarını otomatik olarak bulup serbest bırakan mekanizmadır. Java, C#, Python, JavaScript ve Go gibi dillerde geliştiricinin belleği elle temizleme yükünü alır.

Çöp toplama nedir?
Çöp toplama, yazılımda kullanılmayan nesnelerin bellekten otomatik olarak temizlenmesidir. İngilizcede garbage collection, kısaca GC olarak geçer. Geliştirici bir nesne oluşturur ama onu silmekle uğraşmaz; dilin çalışma ortamı bu işi arka planda yapar.
Nasıl çalışır?
Çöp toplayıcı, programın hâlâ erişebildiği nesneleri bulmakla işe başlar. Global değişkenler ve o an çalışan fonksiyonların yerel değişkenleri başlangıç noktasıdır. Buralardan referans zinciriyle ulaşılabilen her nesne "canlı" sayılır. Hiçbir yoldan ulaşılamayan nesneler ise çöptür ve kapladıkları alan geri alınır.
Örneğin bir fonksiyon içinde 10.000 elemanlı geçici bir liste oluşturduğunuzu düşünün. Fonksiyon bittiğinde listeye işaret eden bir değişken kalmaz. Bir sonraki toplama turunda çöp toplayıcı bu listeyi fark eder ve belleği serbest bırakır.
Bazı diller farklı yöntemler kullanır. Python, her nesneye kaç referans olduğunu sayar ve sayı sıfıra düşünce nesneyi hemen siler; buna ek olarak döngüsel referansları yakalayan bir toplayıcı da çalıştırır.
Avantajları ve bedeli
En büyük kazanç güvenliktir. Silinmiş belleği kullanmak ya da aynı alanı iki kez serbest bırakmak gibi hatalar büyük ölçüde ortadan kalkar. Bunun bedeli, toplama sırasında harcanan işlemci zamanı ve ara sıra yaşanabilen kısa duraklamalardır.
Oyun ve yüksek frekanslı işlem sistemleri gibi milisaniyelerin önemli olduğu alanlarda bu duraklamalar dikkate alınır. Sıradan bir web uygulamasında ise genellikle sorun olmaz. Uygulamanızda düzenli takılmalar görüyorsanız, dilinizin GC loglarını açıp toplama sürelerini incelemek iyi bir başlangıçtır.
Sıkça Sorulan Sorular
Çöp toplama programı yavaşlatır mı?
Biraz ek iş yükü getirir ve bazı durumlarda kısa duraklamalara neden olabilir. Modern çöp toplayıcılar bu duraklamaları çok kısa tutacak şekilde tasarlanmıştır, bu yüzden çoğu uygulamada fark hissedilmez.
Çöp toplama bellek sızıntısını tamamen önler mi?
Hayır. Gereksiz yere referansını tuttuğunuz nesneler hâlâ kullanılıyor sayılır ve temizlenmez. Bu tür sızıntılar çöp toplayıcılı dillerde de görülür.