0Pricing
JavaScript Academy · Pelajaran

Menghindari Kebocoran — Closure, Pewaktu, Referensi

Cegah kebocoran memori dengan menghapus pewaktu, membatasi closure, dan melepaskan referensi yang tidak digunakan; gunakan pola kecil yang dapat diterapkan pemula

Menghindari Kebocoran — Closure, Pewaktu, Referensi adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 3 pelajaran total.

Apa itu kebocoran?

Tujuan: Hindari kebocoran sederhana.

  • Selalu hapus pengatur waktu
  • Jangan menyimpan referensi yang tidak digunakan
  • Buat penutupan tetap kecil
  • Utamakan data yang berumur singkat
Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 1

Hapus interval

Simpan ID interval; panggil clearInterval saat pembersihan agar pengatur waktu dan tangkapannya dapat dikumpulkan.

// 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();
Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 2

Penutupan yang lebih kecil

Penutupan menyimpan hal-hal yang ditangkapnya. Jika memungkinkan, tangkap nilai-nilai kecil, bukan seluruh objek.

// 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());
Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 3

Batasi buffer Anda

Larik atau Map yang berumur panjang dapat menyebabkan kebocoran memori jika tumbuh tanpa batas; pangkas atau setel ulang secara berkala.

// 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);
Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 4

Sekilas tentang WeakMap

WeakMap berguna untuk menambahkan data meta tanpa mencegah pengumpulan sampah pada objek kunci.

// 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)");
Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 5

Kebiasaan mencegah kebocoran

Daftar periksa:

  • Simpan ID pengatur waktu; lakukan clearInterval/clearTimeout saat pembersihan.
  • Tangkap hanya nilai yang diperlukan dalam penutupan.
  • Pangkas/setel ulang larik atau Map yang berumur panjang.
  • Utamakan data yang berumur singkat; lepaskan referensi setelah selesai.
Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 6

Kuis pembersihan pengatur waktu

Pemeriksaan singkat: Pengatur waktu dan kebocoran.

Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 7

Ringkasan

Ringkasan: Hapus pengatur waktu, hindari menangkap objek yang sangat besar dalam penutupan, lalu pangkas atau lepaskan referensi yang berumur panjang. Pembersihan kecil mencegah aplikasi ramah pemula mengalami kebocoran memori.

Menghindari Kebocoran — Closure, Pewaktu, Referensi — ilustrasi 8

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menghindari Kebocoran — Closure, Pewaktu, Referensi” gratis?

Ya — teks lengkap “Menghindari Kebocoran — Closure, Pewaktu, Referensi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Menghindari Kebocoran — Closure, Pewaktu, Referensi”?

Cegah kebocoran memori dengan menghapus pewaktu, membatasi closure, dan melepaskan referensi yang tidak digunakan; gunakan pola kecil yang dapat diterapkan pemula Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai JavaScript Academy?

Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.

Berapa lama pelajaran “Menghindari Kebocoran — Closure, Pewaktu, Referensi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?

Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar Big-O, Jalur Panas vs Dingin (Kemenangan Pemula)
  2. Menghindari Kebocoran — Closure, Pewaktu, Referensi
  3. Pengantar Pembuatan Profil (Node/DevTools) — Kebiasaan Mengukur Waktu
← Kembali ke JavaScript Academy