Rumah > Soal Jawab > teks badan
var user = { name: 'tom', age: 20, gender: 'male' }
var test = document.getElementById('test');
test.onclick = function() {
test.innerHTML = user.name;
}
user = null; // 释放对象
Saya menghadapi soalan temu bual seperti ini baru-baru ini Adakah terdapat kebocoran ingatan dalam perenggan ini, bolehkah seseorang menunjukkan sebabnya dan bagaimana untuk menghapuskan kebocoran memori
给我你的怀抱2017-05-19 10:44:35
Memori bocorRingkasnya, memori yang diperuntukkan tidak boleh digunakan atau dikitar semula sehingga proses pelayar tamat.
Untuk masalah rujukan pekelilinghanya hapuskan rujukan terus, tetapkan test=null
,因为js
mekanisme kutipan sampah untuk dilaksanakan secara berkala, cari pembolehubah yang tidak lagi digunakan, dan kemudian lepaskan memori yang diduduki oleh mereka.
. Kutipan sampah
仅有的幸福2017-05-19 10:44:35
Prinsipnya adalah seperti yang ditunjukkan dalam gambar di bawah Ujian anda adalah elem dalam gambar Ia merujuk kepada elemen dom dan menambah pengendali acara kepada elemen dom Walau bagaimanapun, fungsi pemprosesan acara merujuk kepada ujian dalam skop luaran. jadi seperti berikut: Ia menjadi rujukan bulat.
Kebocoran memori sebenarnya adalah ujian dan bukannya pengguna Membersihkan rujukan kepada ujian luaran boleh memusnahkan rujukan pekeliling ini.
Malah, ini tidak akan menjadi masalah dalam pelayar moden kerana penggunaan algoritma tanda dan sapu Dalam pelayar lama, algoritma pengumpulan sampah hanya akan menyebabkan kebocoran memori disebabkan rujukan, iaitu rujukan bulat akan menyebabkan objek. menjadi tidak tersedia dan masih tidak boleh menjadi sampah.
世界只因有你2017-05-19 10:44:35
Apakah itu kebocoran ingatan?
Ini akan menyebabkan ralat pelaksanaan. . . . . .
巴扎黑2017-05-19 10:44:35
Sudah pasti, ia termasuk dalam soalan temuduga CVTE. Oleh kerana rujukan kepada nama pengguna dikekalkan dalam acara klik, ia masih akan dibocorkan.
Mengenai cara untuk menghapuskan masalah, satu-satunya perkara yang saya boleh fikirkan ialah dengan tidak merujuk secara langsung seperti yang dinyatakan di atas