0Pricing
JavaScript Academy · Ders

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
Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 1

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();
Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 2

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());
Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 3

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);
Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 4

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ılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 5

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.
Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 6

Zamanlayıcı temizleme testi

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

Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 7

Ö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ızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular — resim 8

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

  1. Big-O Temelleri, Sıcak ve Soğuk Yollar (Başlangıç Kazanımları)
  2. Sızıntılardan Kaçınma — Kapanımlar, Zamanlayıcılar, Başvurular
  3. Profil Oluşturmaya Giriş (Node/DevTools) — Küçük Zamanlama Alışkanlıkları
← JavaScript Academy Sayfasına Dön