JavaScript'te bellek sızıntısı (memory leak) nasıl oluşur, nasıl tespit edilir?

Cevap

Bellek sızıntısı, artık ihtiyaç duyulmayan nesnelere hâlâ bir referans kaldığı için çöp toplayıcının onları temizleyememesidir.

Sık nedenler:

  • Temizlenmeyen setInterval / setTimeout
  • Kaldırılmayan event listener'lar (özellikle window, document üzerinde)
  • Büyüyüp hiç temizlenmeyen global diziler veya Map tabanlı önbellekler
  • DOM'dan kaldırılmış ama JS'te referansı tutulan elemanlar (detached DOM)
  • Closure'ların büyük nesneleri gereksiz yere yakalaması

Tespit: Chrome DevTools → Memory sekmesinde iki heap snapshot alıp karşılaştırmak, "Detached" elemanları aramak, Performance sekmesinde JS heap grafiğinin sürekli yükselip yükselmediğine bakmak.

// React'te doğru temizlik
useEffect(() => {
  const onResize = () => setGenislik(window.innerWidth);
  window.addEventListener("resize", onResize);
  return () => window.removeEventListener("resize", onResize);
}, []);
  1. var, let ve const arasındaki fark nedir?KolayJavaScriptFrontend
  2. == ile === arasındaki fark nedir?KolayJavaScriptFrontend
  3. Closure nedir? Bir örnekle açıklayın.OrtaJavaScriptFrontend
  4. Aşağıdaki kodun çıktısı nedir? (Event loop)OrtaJavaScriptFrontend
  5. this anahtar kelimesi nasıl belirlenir? Arrow function'larda ne değişir?OrtaJavaScriptFrontend
  6. Bir debounce fonksiyonu yazın.ZorJavaScriptFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle