JS垃圾回收

JS垃圾回收

基本思路:確定那個(gè)變量不會(huì)再使用,然后釋放其所占內(nèi)存,這個(gè)過(guò)程是周期性的,即垃圾回收程序每隔一段時(shí)間(或者說(shuō)在代碼執(zhí)行過(guò)程中某個(gè)預(yù)定的收集時(shí)間)就會(huì)自動(dòng)運(yùn)行

  • 缺點(diǎn):垃圾回收的過(guò)程中,因?yàn)槟硥K內(nèi)存是否還有用,不可判定

栗子:

函數(shù)中的局部變量會(huì)在函數(shù)執(zhí)行時(shí)存在,此時(shí),棧(或堆)內(nèi)存會(huì)分配空間以保存相應(yīng)的值
函數(shù)在內(nèi)部使用了變量,然后退出,此時(shí)就不再需要哪個(gè)局部變量了,他占用的內(nèi)容就會(huì)被釋放,供后面變量使用
這種情況下顯然不再需要局部變量了,但并不是所有的時(shí)候都會(huì)這么明顯,這個(gè)局部變量不再需要使用

兩種標(biāo)記方法

垃圾回收程序必須跟蹤記錄那個(gè)變量還會(huì)使用,以及那個(gè)變量不需要再使用,以便回收內(nèi)存.

1)標(biāo)記清理 (常用)

當(dāng)變量進(jìn)入執(zhí)行上下文時(shí),就會(huì)被執(zhí)行上下文的文本環(huán)境記錄(此時(shí),加上存在于執(zhí)行上下文的標(biāo)記),當(dāng)變量離開(kāi)執(zhí)行上下文時(shí)也會(huì)被加上離開(kāi)執(zhí)行上下文的標(biāo)記

標(biāo)記的方法有很多


image-20210928191438132.png

2)引用計(jì)數(shù)

思路:每個(gè)值都被記錄他引用的次數(shù),當(dāng)這個(gè)值聲明變量時(shí)并給他賦予一個(gè)引用值,如果同一個(gè)值又被賦予另一個(gè)變量時(shí),引用值++,反之這個(gè)值引用的變量被其他值覆蓋時(shí),引用值--,當(dāng)其引用值為 0 時(shí) 釋放該值所占的內(nèi)存 以供其他人使用(這個(gè)內(nèi)存RAM => 運(yùn)行內(nèi)存)

var num = 1
// 內(nèi)存中會(huì)有一個(gè) 1 的值 并且其 引用值 n = 1
var nums = 1
// 此時(shí) 內(nèi)存 中的 1 的 引用值++ => n++ = 2
num = 2
// 此時(shí) 內(nèi)存 中的 1 的 引用值-- => n-- = 1 而 2 的引用值 s = 1
nums = 2 
// 此時(shí) 內(nèi)存 中的 1 的 引用值-- => n-- = 0 而 2 的引用值 s++ = 1
// 故 此時(shí) 值:1 所占用的內(nèi)存 將被釋放

在NetScape 4.0 版本時(shí) JavaScript就放棄了 引用計(jì)數(shù) 轉(zhuǎn)而 使用 標(biāo)記清理 因?yàn)楹瘮?shù)中的Object 的 引用值 永遠(yuǎn)不會(huì)為 0 導(dǎo)致內(nèi)存占用無(wú)法被釋放 從而導(dǎo)致 性能降低

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市限煞,隨后出現(xiàn)的幾起案子员凝,更是在濱河造成了極大的恐慌,老刑警劉巖健霹,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抚官,居然都是意外死亡阶捆,警方通過(guò)查閱死者的電腦和手機(jī)凌节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)倍奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)垒棋,“玉大人,你說(shuō)我怎么就攤上這事叼架。” “怎么了乖订?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵乍构,是天一觀的道長(zhǎng)甜无。 經(jīng)常有香客問(wèn)我哥遮,道長(zhǎng),這世上最難降的妖魔是什么奥帘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任仪召,我火速辦了婚禮牲距,結(jié)果婚禮上钥庇,老公的妹妹穿的比我還像新娘。我一直安慰自己评姨,他們只是感情好萤晴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著店读,像睡著了一般。 火紅的嫁衣襯著肌膚如雪文虏。 梳的紋絲不亂的頭發(fā)上殖演,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音趴久,去河邊找鬼。 笑死灭忠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弛作。 我是一名探鬼主播坎吻,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瘦真!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起原杂,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤您机,失蹤者是張志新(化名)和其女友劉穎年局,沒(méi)想到半個(gè)月后咸产,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體矢否,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡僵朗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年屑彻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片社牲。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖违寿,靈堂內(nèi)的尸體忽然破棺而出挑社,到底是詐尸還是另有隱情陨界,我是刑警寧澤痛阻,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布阱当,位于F島的核電站俏扩,受9級(jí)特大地震影響弊添,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜油坝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彬檀。 院中可真熱鬧瞬女,春花似錦窍帝、人聲如沸诽偷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至飞苇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诫舅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留这弧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓匾浪,卻偏偏與公主長(zhǎng)得像卷哩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子将谊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 垃圾回收制度主要是通過(guò)標(biāo)記清理和引用技術(shù)的方式進(jìn)行管理1.標(biāo)記清理:當(dāng)變量進(jìn)入上下文的時(shí)候尊浓,逞频,比如在函數(shù)中聲明一個(gè)...
    Viewwei閱讀 165評(píng)論 0 0
  • 在 JS 中 值類型數(shù)據(jù)存儲(chǔ)在 椕缯停空間中,引用類型的數(shù)據(jù)存儲(chǔ)在堆空間中基协。有些數(shù)據(jù)被使用之后,就不需要了堡掏,我們需...
    _1633_閱讀 349評(píng)論 0 1
  • 使用JavaScript進(jìn)行前端開(kāi)發(fā)時(shí)幾乎完全不需要關(guān)心內(nèi)存管理問(wèn)題刨疼,對(duì)于前端編程來(lái)說(shuō)鹅龄,V8限制的內(nèi)存幾乎不會(huì)出現(xiàn)...
    寫(xiě)B(tài)log不取名閱讀 10,892評(píng)論 9 20
  • 和C#亭畜、Java一樣JavaScript有自動(dòng)垃圾回收機(jī)制,也就是說(shuō)執(zhí)行環(huán)境會(huì)負(fù)責(zé)管理代碼執(zhí)行過(guò)程中使用的內(nèi)存拴鸵,在...
    fortunatelys閱讀 337評(píng)論 0 1
  • 一、垃圾回收簡(jiǎn)述 JS 是使用垃圾回收的語(yǔ)言挂谍,簡(jiǎn)單來(lái)說(shuō)就是執(zhí)行環(huán)境負(fù)責(zé)在代碼執(zhí)行時(shí)管理內(nèi)存】谛穑基本思路很簡(jiǎn)單:確定哪...
    前端_Fn閱讀 558評(píng)論 0 0