Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular
Zamanlayıcıları temizleyerek, kapanımları sınırlayarak ve kullanılmayan başvuruları bırakarak bellek sızıntılarını önleyin; başlangıç düzeyinde uygulanabilir küçük kalıplar kullanın.
Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.
Sızıntı nedir?
Hedef: Basit bellek sızıntılarından kaçınmak.
- Zamanlayıcıları her zaman temizleyin
- Kullanılmayan başvuruları saklamayın
- Kapanımları küçük tutun
- Kısa ömürlü verileri tercih edin

Aralık zamanlayıcılarını temizleyin
Aralık zamanlayıcısının id değerini saklayın; zamanlayıcının ve yakaladığı değerlerin toplanabilmesi için temizlik sırasında clearInterval çağırın.
// Start an interval and then clear it to avoid leaks
function startTicker() {
// store id so we can clear later
const id = setInterval(function () {
// work would run every X ms; omitted for demo
}, 1000);
// simulate screen close / cleanup
clearInterval(id);
console.log("interval cleared");
}
startTicker();

Daha küçük kapanımlar
Kapanımlar, yakaladıkları değerleri saklar. Mümkün olduğunda nesnelerin tamamı yerine küçük değerleri yakalayın.
// Avoid capturing large objects when only small data is needed
function makeReporter(bigArray) {
// BAD: store the whole array inside the closure
const large = bigArray;
return function reportLength() {
// Only the length is used
return large.length;
};
}
// BETTER: capture only what you need
function makeReporterBetter(bigArray) {
const count = bigArray.length; // small number
return function reportLength() {
return count;
};
}
const arr = new Array(1000).fill(0);
const bad = makeReporter(arr);
const good = makeReporterBetter(arr);
console.log("bad:", bad(), "good:", good());

Arabelleklerin sınırını belirleyin
Uzun ömürlü diziler ve eşlemler sınırsız büyürse bellek sızıntısına yol açabilir; bunları düzenli olarak kırpın veya sıfırlayın.
// A growing buffer can leak if never trimmed or reset
const buffer = []; // module-level array
function logItem(x) {
buffer.push(x); // grows forever if not managed
}
// Simulate usage
logItem("a");
logItem("b");
// FIX: trim or reset when size is over a limit
function trimBuffer(limit) {
if (buffer.length > limit) {
buffer.length = limit; // drop old items
}
}
trimBuffer(1);
console.log("buffer size:", buffer.length);

WeakMap kullanımı
WeakMap, anahtar nesnenin çöp toplanmasını engellemeden üstveri eklemek için kullanışlıdır.
// WeakMap holds keys weakly: when the object is gone, the entry can be collected
const meta = new WeakMap();
function attachMeta(obj, info) {
meta.set(obj, info);
}
function readMeta(obj) {
return meta.get(obj); // undefined if not set or collected
}
let user = { name: "Ayla" };
attachMeta(user, { seen: true });
console.log("meta now:", readMeta(user));
// Later: drop the only strong reference
user = null; // after this, the object and its metadata can be GC'd at some point
console.log("object reference dropped (cannot show GC in console)");

Sızıntı önleme alışkanlıkları
Denetim listesi:
- Zamanlayıcı kimliklerini saklayın; temizlik sırasında clearInterval/clearTimeout çağırın.
- Kapanımlarda yalnızca gereken değerleri yakalayın.
- Uzun ömürlü dizileri ve eşlemleri kırpın/sıfırlayın.
- Kısa ömürlü verileri tercih edin; işiniz bittiğinde başvuruları bırakın.

Zamanlayıcı temizleme testi
Hızlı kontrol: Zamanlayıcılar ve sızıntılar.

Özet
Özet: Zamanlayıcıları temizleyin, kapanımlarda büyük nesneleri yakalamaktan kaçının ve uzun ömürlü başvuruları kırpın veya bırakın. Küçük temizlik işlemleri, yeni başlayanlara yönelik uygulamaların bellek sızdırmasını önler.

Sıkça Sorulan Sorular
“Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular” dersi ücretsiz mi?
Evet — “Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.
“Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular” dersinde ne öğreneceğim?
Zamanlayıcıları temizleyerek, kapanımları sınırlayarak ve kullanılmayan başvuruları bırakarak bellek sızıntılarını önleyin; başlangıç düzeyinde uygulanabilir küçük kalıplar kullanın. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.
“Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Big-O Temelleri, Sıcak ve Soğuk Yollar (Başlangıç Kazanımları)
- Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular
- Profil Oluşturmaya Giriş (Node/DevTools) — Küçük Zamanlama Alışkanlıkları