Memory leak
- Node.js kursu
- Uzman
- Ders 22/47
- 5 dk
Memory leak tespiti ve önlemeyi öğrenirsin.
Memory leak
Bir memory leak (bellek sızıntısı), artık kullanılmayan nesnelerin bellekte tutulmasıdır. Yaygın sebep: büyümeye devam eden bir önbellek (cache). Nesneler eklenir ama çıkarılmaz; önbellek sonsuza dek büyür.
Bir detectLeak(cache, limit) fonksiyonu bunu denetler: cache.size > limit ise true döndürür. Örnek: new Set(['x', 'y', 'z']) ile detectLeak(cache, 2) true döndürür (3 > 2). detectLeak(cache, 10) false döndürür (3 < 10). Bu model, bir önbelleğin sınırı aşıp aşmadığını denetler. Gerçek uygulamada önbellek büyümesini izlemek, sızıntıyı erken yakalamanın yoludur. Set.size kümenin eleman sayısını verir.
Sızıntı denetimi
Bu derste detectLeak fonksiyonunu yazacağız. Fonksiyon bir önbellek ve bir sınır alır; önbellek sınırı aşmışsa true döndürür. Bu, bellek sızıntısını bir boyut denetimiyle yakalamanın basit yoludur.
Örnek: const cache = new Set(['x', 'y', 'z']). detectLeak(cache, 2) true döndürür (3 > 2). detectLeak(cache, 10) false döndürür. cache.size kümenin eleman sayısını verir; > limit ile karşılaştırılır. Bu desen, gerçek uygulamalarda önbellek büyümesini izlemek için kullanılır: bir sınır konur, aşıldığında uyarı verilir. Çıktı true ve false olur; deterministiktir.
Uygulama Sızıntı denetleyici yaz
function detectLeak(cache, limit) yaz. return cache.size > limit ile döndür. const cache = new Set(['x', 'y', 'z']) tanımla. console.log(detectLeak(cache, 2)) ve console.log(detectLeak(cache, 10)) yazdır.
Başlangıç kodu
// detectLeak fonksiyonu yaz
// önbellek boyutu sınırı aşarsa true döndür
// new Set(['x','y','z']) ile çağır, iki sınır dene
// buraya yazÖrnek çözüm
function detectLeak(cache, limit) {
return cache.size > limit;
}
const cache = new Set(['x', 'y', 'z']);
console.log(detectLeak(cache, 2));
console.log(detectLeak(cache, 10));Beklenen çıktı
true false
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 new Set(['x','y','z']).size ne döndürür?
new Set(['x','y','z']).size- 2
- 3 Doğru cevap
- 1
- 0
Açıklama: Kümede üç eleman var: x, y, z.
2 Kavramı açıklamasına eşle
| Kavram | Anlamı |
|---|---|
Memory leak |
Kullanılmayan nesneler kalır |
Set.size |
Eleman sayısı |
limit |
Sınır |
cache |
Önbellek |
3 size karşılaştırmasını tamamla
return cache.____ > limit;
return cache.size > limit;
Açıklama: cache.size eleman sayısını verir.