Rumah > hujung hadapan web > tutorial js > Kebocoran Memori Biasa dalam JavaScript

Kebocoran Memori Biasa dalam JavaScript

Mary-Kate Olsen
Lepaskan: 2025-01-08 14:35:40
asal
920 orang telah melayarinya

Common Memory Leaks in JavaScript

1. Pembolehubah Global

Pembolehubah global kekal sepanjang hayat aplikasi dan jarang sampah dikumpul. Apabila pembolehubah tidak skop yang sesuai, ini boleh menyebabkan kebocoran memori secara tidak sengaja.

function myFunc() {
    globalVar = "I'm a memory leak!";
}
Salin selepas log masuk

2. Nod DOM terpisah

Nod DOM yang dialih keluar boleh kekal dalam ingatan jika dirujuk dalam JavaScript, walaupun tidak lagi dipaparkan.

let element = document.getElementById("myElement");
document.body.removeChild(element); // Node removed but still referenced
Salin selepas log masuk

3. Pemasa dan Panggilan Balik

setInterval dan setTimeout mengekalkan rujukan kepada panggilan balik dan pembolehubah, yang berpotensi menyebabkan kebocoran memori dalam aplikasi yang berjalan lama.

let intervalId = setInterval(() => {
    console.log("Running indefinitely...");
}, 1000);

// Clear when no longer needed
clearInterval(intervalId);
Salin selepas log masuk

4. Penutupan

Penutupan secara tidak sengaja boleh mengekalkan rujukan kepada pembolehubah daripada fungsi luarnya, yang membawa kepada isu ingatan.

function outer() {
    let bigData = new Array(100000).fill("data");
    return function inner() {
        console.log(bigData.length);
    };
}
Salin selepas log masuk

Di sini, inner memegang bigData walaupun ia tidak diperlukan lagi.

Strategi untuk Mencegah dan Membetulkan Kebocoran Memori ?

1. Minimumkan Pembolehubah Global

Gunakan skop setempat (fungsi atau blok) untuk pembolehubah bagi mengelakkan kegigihan memori yang tidak perlu.

2. Kosongkan Rujukan kepada Nod DOM Terpisah

Pastikan pembolehubah yang merujuk nod DOM yang dialih keluar ditetapkan kepada null.

document.body.removeChild(element);
element = null; // Clear the reference
Salin selepas log masuk

3. Urus Pemasa dan Pendengar Acara

Sentiasa kosongkan pemasa dan alih keluar pendengar acara apabila ia tidak diperlukan lagi, terutamanya dalam aplikasi dinamik satu halaman.

let timer = setInterval(doSomething, 1000);
// Clear when no longer needed
clearInterval(timer);
Salin selepas log masuk

4. Elakkan Penutupan Besar Apabila Boleh

Meminimumkan skop penutupan atau kod penstrukturan semula untuk mengelakkan daripada mengekalkan struktur data yang besar tanpa perlu.


Saya harap anda dapati ia membantu. Terima kasih kerana membaca. ?
Mari berhubung! Anda boleh menemui saya di:

  • Sederhana: https://medium.com/@nhannguyendevjs/
  • Dev: https://dev.to/nhannguyendevjs/
  • Linkedin: https://www.linkedin.com/in/nhannguyendevjs/
  • X (dahulunya Twitter): https://twitter.com/nhannguyendevjs/
  • Beli Saya Kopi: https://www.buymeacoffee.com/nhannguyendevjs

Atas ialah kandungan terperinci Kebocoran Memori Biasa dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan