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);
}, []);İlgili JavaScript soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.