更新時(shí)間:2021-07-21 來(lái)源:黑馬程序員 瀏覽量:
定義:指一塊被分配的內(nèi)存既不能使用,又不能回收,直到瀏覽器進(jìn)程結(jié)束。
像 C 這樣的編程語(yǔ)言,具有低級(jí)內(nèi)存管理原語(yǔ),如 malloc()和 free()。開(kāi)發(fā)人員使用這些原語(yǔ)顯式地對(duì)操作系統(tǒng)的內(nèi)存進(jìn)行分配和釋放。
而 JavaScript 在創(chuàng)建對(duì)象(對(duì)象、字符串等)時(shí)會(huì)為它們分配內(nèi)存,不再使用對(duì)時(shí)會(huì)“自動(dòng)”釋放內(nèi)存,這個(gè)過(guò)程稱為垃圾收集。
內(nèi)存生命周期中的每一個(gè)階段:
分配內(nèi)存 —? 內(nèi)存是由操作系統(tǒng)分配的,它允許您的程序使用它。在低級(jí)語(yǔ)言(例如 C 語(yǔ)言)中,這是一個(gè)開(kāi)發(fā)人員需要自己處理的顯式執(zhí)行的操作。然而,在高級(jí)語(yǔ)言中,系統(tǒng)會(huì)自動(dòng)為你分配內(nèi)在。
使用內(nèi)存 — 這是程序?qū)嶋H使用之前分配的內(nèi)存,在代碼中使用分配的變量時(shí),就會(huì)發(fā)生讀和寫操作。
釋放內(nèi)存 — 釋放所有不再使用的內(nèi)存,使之成為自由內(nèi)存,并可以被重利用。與分配內(nèi)存操作一樣,這一操作在低級(jí)語(yǔ)言中也是需要顯式地執(zhí)行。
四種常見(jiàn)的內(nèi)存泄漏:全局變量,未清除的定時(shí)器,閉包,以及 dom 的引用
全局變量 不用 var 聲明的變量,相當(dāng)于掛載到 window 對(duì)象上。如:b=1; 解決:使用嚴(yán)格模式
被遺忘的定時(shí)器和回調(diào)函數(shù)
閉包
沒(méi)有清理的 DOM 元素引用
3種JavaScript代碼書寫位置和注意事項(xiàng)
JavaScript數(shù)據(jù)類型:javascript數(shù)據(jù)類型有哪些?