CodeBlanks Logo Icon CodeBlanks

Memory leak

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

index.js
// 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

index.js
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?

index.js
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

Soru
return cache.____ > limit;
Cevap
return cache.size > limit;

Açıklama: cache.size eleman sayısını verir.

Uzman bölümündeki tüm dersler