Back to blog
Backend

Memory Leak: Kenapa Server Node.js-mu Makin Lama Makin Lemot?

Hari Senin di-deploy, server ngebut. Hari Selasa agak nge-lag. Hari Kamis, server tiba-tiba mati sendiri. Selamat, aplikasimu terkena kanker memori (Memory Leak)!

super admin·02 Agustus 2026·2 min read
Memory Leak: Kenapa Server Node.js-mu Makin Lama Makin Lemot?
Article Content

Bayangin Budi Bikin Fitur Simpan History...

Bayangin Budi bikin Server API Node.js. Setiap kali ada pengunjung yang nge-hit API /login, Budi mencatat IP pengunjung itu ke dalam sebuah variabel global (Array) bernama globalLoginHistory untuk iseng-iseng dilihat nanti.

Di hari pertama (Senin), ada 1.000 pengunjung. Array-nya berisi 1.000 data. RAM server masih lega.
Di hari Rabu, ada 1 Juta pengunjung. Array-nya membengkak berisi 1 Juta data.
Di hari Jumat malam, Budi ditelepon bosnya. Server *Production* mereka meledak! Muncul pesan mengerikan di layar hitam terminal: FATAL ERROR: JavaScript heap out of memory!

Masalahnya: Tukang Sampah yang Dilarang Kerja

Di dunia JavaScript, kita tidak perlu repot menghapus variabel dari memori RAM secara manual. JavaScript punya asisten gaib bernama Garbage Collector (Tukang Sampah). Setiap kali sebuah fungsi selesai bekerja, Tukang Sampah akan datang dan menghapus variabel sementara (sampah) agar RAM kembali kosong.

Tapi, Tukang Sampah ini punya satu aturan suci: "Saya TIDAK BOLEH menghapus variabel Global yang ditaruh di luar fungsi, karena mungkin programer masih membutuhkannya."

Nah, Di Sinilah 'Memory Leak' Terjadi!

Karena Budi menaruh globalLoginHistory sebagai variabel Global (atau menyimpan data di dalam Closure / Event Listener yang tidak pernah dicopot), Tukang Sampah tidak berani menyentuhnya.

Data itu terus menumpuk di RAM bagaikan kanker. RAM 1GB lama-lama sesak napas. Server mulai *Lag* parah karena Tukang Sampah bekerja panik mondar-mandir mencari celah kosong, sampai akhirnya RAM penuh 100% dan aplikasi pingsan (Crash).

Intinya: Memory Leak (Kebocoran Memori) adalah *bug* terburuk karena dia tidak langsung muncul saat *testing*. Jangan pernah menyimpan tumpukan data log/history dalam waktu lama di dalam variabel lokal Node.js. Jika mau menyimpan riwayat, gunakanlah Database atau Redis!

Mau langsung pakai template?

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

Browse Templates