# Memory Leak (Bellek Sızıntısı)

Adres: https://softwaredictionary.org/tr/terimler/memory-leak
Kategori: İşletim Sistemleri
Son güncelleme: 2026-09-30
Okunuşu: memıri lik

Kısaca: Memory leak, bir programın artık ihtiyaç duymadığı belleği tutmayı sürdürdüğü hatadır; bellek kullanımı zamanla artar, sistem yavaşlayabilir ya da çökebilir.

## Memory leak (bellek sızıntısı) nedir?

Memory leak, bir program bellek ayırıp sonra onu gözden kaybettiğinde ya da ona gereksiz bir başvuru tutmaya devam ettiğinde ortaya çıkar; bellek hiçbir zaman serbest bırakılmaz. Küçük bir sızıntı önemli olmayabilir, ancak bir sunucu, mobil uygulama ya da tarayıcı sekmesi gibi uzun süre çalışan bir programda sızan bellek, program yavaşlayana, işletim sistemi tarafından sonlandırılana veya bellek yetersizliği hatasıyla çökene kadar birikir.

C ve C++ gibi elle bellek yönetimi olan dillerde sızıntı genellikle belleğin `malloc` ya da `new` ile ayrılıp hiç `free` veya `delete` ile serbest bırakılmaması demektir. JavaScript, Java ve Python gibi çöp toplamalı (garbage-collected) dillerde çöp toplayıcı yalnızca artık hiçbir şeyin başvurmadığı nesneleri serbest bırakır; bu yüzden sızıntılar kazara takılı kalan başvurulardan gelir. Tipik nedenler, sürekli büyüyen önbellekler ya da global diziler, hiç kaldırılmayan olay dinleyicileri ve zamanlayıcılar ve büyük nesneleri yakalayan closure'lardır.

Memory leak, müşterilerin ayrılıp masalarının hiç toplanmadığı bir restorana benzer. Terk edilmiş her masa zararsız görünür, ancak yoğun bir akşamın sonunda yeni misafirlere yer kalmaz. Geliştiriciler sızıntıları, bellek kullanımını zaman içinde izleyerek ve tarayıcı geliştirici araçlarındaki heap anlık görüntülerini, bellek profilleyicilerini veya Valgrind ile AddressSanitizer gibi sızıntı dedektörlerini kullanarak bulur.

Memory leak, yüksek bellek kullanımıyla aynı şey değildir. Çok bellek kullanan ama kararlı bir düzeyde kalan bir program sızdırmıyordur; sızdıran bir programın belleği ise çalıştıkça üst sınır olmadan tırmanmaya devam eder. Bir process sonlandığında işletim sistemi kullandığı tüm belleği geri alır; sızıntıların esas olarak uzun süre çalışan programlara zarar vermesinin nedeni budur.

## Önemli noktalar

- Memory leak, program artık ihtiyaç duymasa da ayrılmış halde kalan bellektir.
- Sızıntılar bellek kullanımının zamanla istikrarlı biçimde artmasına yol açar.
- Çöp toplama, takılı kalan başvuruların yol açtığı sızıntıları önlemez.
- Yaygın nedenler arasında sınırsız önbellekler, unutulan olay dinleyicileri ve hiç temizlenmeyen zamanlayıcılar vardır.
- Heap anlık görüntüleri ve bellek profilleyicileri, sızan nesneleri bulmaya yardımcı olur.

## Örnek: JavaScript'te iki yaygın bellek sızıntısı

```javascript
// Leak: this cache grows forever because entries are never removed
const cache = new Map();

function getUser(id) {
  if (!cache.has(id)) cache.set(id, loadUser(id));
  return cache.get(id);
}

// Leak: each call adds a new listener that keeps panel alive
function openPanel(panel) {
  window.addEventListener("resize", () => panel.resize());
}

// Fix: cap the cache size and remove listeners when the panel closes
```

## Sık sorulan sorular

**Çöp toplamalı bir dilde memory leak olabilir mi?**

Evet. Çöp toplayıcı yalnızca artık erişilemeyen nesneleri serbest bırakır; bu yüzden kodunuz global bir önbellekte ya da bir olay dinleyicisinde olduğu gibi gereksiz bir başvuruyu tutuyorsa o bellek asla geri alınmaz.

**Bir memory leak'i nasıl bulurum?**

Önce büyümeye devam ettiğini doğrulamak için programın bellek kullanımını zaman içinde izleyin. Ardından heap anlık görüntüleri alın veya bir bellek profilleyicisi kullanarak anlık görüntüler arasında hangi nesnelerin biriktiğini karşılaştırın; bu nesneler genellikle sızıntıyı işaret eder.

**Memory leak program kapatıldıktan sonra da sürer mi?**

Hayır. Bir process sonlandığında işletim sistemi kullandığı tüm belleği geri alır. Sızıntılar en çok sunucular ve günlerce açık kalan uygulamalar gibi uzun süre çalışan programlarda önemlidir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
