Back to blog
Frontend

Mengenal Memory Leak di JavaScript dan Cara Mencegahnya

Aplikasi React buatanmu berjalan lancar di 5 menit pertama, lalu tiba-tiba laptop pengunjung menjadi panas dan browsernya crash. Kamu terkena Memory Leak!

super admin·19 Juni 2026·2 min read
Mengenal Memory Leak di JavaScript dan Cara Mencegahnya
Article Content

Kebocoran yang Menghabiskan RAM Pengguna

JavaScript memiliki robot pembersih otomatis yang disebut Garbage Collector (Pengumpul Sampah). Jika sebuah variabel atau data sudah tidak dipakai lagi oleh aplikasimu, robot ini akan membuangnya dari memori (RAM) agar browser pengunjung tetap ringan.

Lalu, apa itu Memory Leak (Kebocoran Memori)?
Ini terjadi ketika ada sekumpulan data/fungsi yang sebenarnya sudah tidak terpakai, TAPI secara tidak sengaja kodemu "menguncinya" sehingga robot Garbage Collector tidak berani membuangnya. Akibatnya, RAM browser semakin lama semakin penuh hingga akhirnya komputer menjadi *hang* (Nge-lag) dan *Browser* terpaksa membunuh tab halaman tersebut (Aw, Snap!).

Penyebab Utama 1: Event Listener yang Terlupakan

Ini adalah kesalahan nomor satu di React.

  • Kamu masuk ke Halaman "Galeri", lalu komponen React-mu memasang alat pendeteksi gulir layar: window.addEventListener('scroll', hitungPosisi).
  • Kamu lalu berpindah ke Halaman "Profil". Komponen Galeri hancur dan hilang dari layar.
  • Masalahnya: Karena kamu tidak menyuruh browser untuk melepas detektor scroll tersebut, fungsi hitungPosisi akan terus menyala dan memakan memori di latar belakang, meskipun halaman Galeri-nya sudah tidak ada! Jika kamu bolak-balik buka halaman Galeri 10 kali, fungsi itu akan jalan dobel 10 kali secara bersamaan!

Cara Mencegah (Cleanup Function)

Selalu sediakan "Fungsi Pembersih" sebelum sebuah komponen pergi. Di React (menggunakan useEffect Hook), kamu harus melakukan fungsi pembersihan (Cleanup) pada nilai return-nya:

useEffect(() => {
  // 1. Memasang detektor saat masuk halaman
  window.addEventListener('scroll', hitungPosisi);

  // 2. Fungsi Pembersih saat akan keluar halaman
  return () => {
    window.removeEventListener('scroll', hitungPosisi);
  };
}, []);

Penyebab 2: setInterval yang Terus Berdetak

Mirip dengan *Event Listener*, jika kamu membuat fitur Timer (Jam Hitung Mundur) dengan menggunakan fungsi bawaan setInterval(), jam tersebut tidak akan berhenti berdetak meskipun kamu sudah menutup halaman (komponen) tersebut. Ia akan jalan selamanya (Infinite Loop) memakan CPU!

Solusinya: Selalu simpan ID intervalnya ke dalam variabel (const timer = setInterval(...)), lalu hancurkan timer tersebut saat *user* pindah halaman menggunakan perintah clearInterval(timer).

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates