久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費學(xué)習(xí)課程

        當前位置:首頁  >  技術(shù)干貨  > 瀏覽器的垃圾回收機制

        瀏覽器的垃圾回收機制

        來源:千鋒教育
        發(fā)布人:wjy
        時間: 2022-09-07 16:59:00 1662541140

        垃圾回收:JavaScript代碼運行時,需要分配內(nèi)存空間來儲存變量和值。當變量不在參與運行時,就需要系統(tǒng)收回被占用的內(nèi)存空間,這就是垃圾回收。

        回收機制:Javascript 具有自動垃圾回收機制,會定期對那些不再使用的變量、對象所占用的內(nèi)存進行釋放,原理就是找到不再使用的變量,然后釋放掉其占用的內(nèi)存。

        JavaScript中存在兩種變量:局部變量和全局變量。全局變量的生命周期會持續(xù)要頁面卸載;而局部變量聲明在函數(shù)中,它的生命周期從函數(shù)執(zhí)行開始,直到函數(shù)執(zhí)行結(jié)束,在這個過程中,局部變量會在堆或棧中存儲它們的值,當函數(shù)執(zhí)行結(jié)束后,這些局部變量不再被使用,它們所占有的空間就會被釋放。

        不過,當局部變量被外部函數(shù)使用時,其中一種情況就是閉包,在函數(shù)執(zhí)行結(jié)束后,函數(shù)外部的變量依然指向函數(shù)內(nèi)部的局部變量,此時局部變量依然在被使用,所以不會回收。

        (2)垃圾回收的方式

        瀏覽器通常使用的垃圾回收方法有兩種:標記清除,引用計數(shù)。

         1)標記清除

        標記清除是瀏覽器常見的垃圾回收方式,當變量進入執(zhí)行環(huán)境時,就標記這個變量“進入環(huán)境”,被標記為“進入環(huán)境”的變量是不能被回收的,因為他們正在被使用。當變量離開環(huán)境時,就會被標記為“離開環(huán)境”,被標記為“離開環(huán)境”的變量會被內(nèi)存釋放。

        垃圾收集器在運行的時候會給存儲在內(nèi)存中的所有變量都加上標記。然后,它會去掉環(huán)境中的變量以及被環(huán)境中的變量引用的標記。而在此之后再被加上標記的變量將被視為準備刪除的變量,原因是環(huán)境中的變量已經(jīng)無法訪問到這些變量了。最后。垃圾收集器完成內(nèi)存清除工作,銷毀那些帶標記的值,并回收他們所占用的內(nèi)存空間。

        2)引用計數(shù)

        另外一種垃圾回收機制就是引用計數(shù),這個用的相對較少。引用計數(shù)就是跟蹤記錄每個值被引用的次數(shù)。當聲明了一個變量并將一個引用類型賦值給該變量時,則這個值的引用次數(shù)就是1。相反,如果包含對這個值引用的變量又取得了另外一個值,則這個值的引用次數(shù)就減1。當這個引用次數(shù)變?yōu)?時,說明這個變量已經(jīng)沒有價值,因此,在在機回收期下次再運行時,這個變量所占有的內(nèi)存空間就會被釋放出來。

        這種方法會引起循環(huán)引用的問題:例如: obj1obj2通過屬性進行相互引用,兩個對象的引用次數(shù)都是2。當使用循環(huán)計數(shù)時,由于函數(shù)執(zhí)行完后,兩個對象都離開作用域,函數(shù)執(zhí)行結(jié)束,obj1obj2還將會繼續(xù)存在,因此它們的引用次數(shù)永遠不會是0,就會引起循環(huán)引用。

        這種情況下,就要手動釋放變量占用的內(nèi)存:

        (3)減少垃圾回收

        雖然瀏覽器可以進行垃圾自動回收,但是當代碼比較復(fù)雜時,垃圾回收所帶來的代價比較大,所以應(yīng)該盡量減少垃圾回收。

        對數(shù)組進行優(yōu)化: 在清空一個數(shù)組時,最簡單的方法就是給其賦值為[ ],但是與此同時會創(chuàng)建一個新的空對象,可以將數(shù)組的長度設(shè)置為0,以此來達到清空數(shù)組的目的。

        對object進行優(yōu)化: 對象盡量復(fù)用,對于不再使用的對象,就將其設(shè)置為null,盡快被回收。

        對函數(shù)進行優(yōu)化: 在循環(huán)中的函數(shù)表達式,如果可以復(fù)用,盡量放在函數(shù)的外面。

        tags:
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        軟件定制開發(fā)中的敏捷開發(fā)是什么?

        軟件定制開發(fā)中的敏捷開發(fā)是什么軟件定制開發(fā)中的敏捷開發(fā),從宏觀上看,是一個高度關(guān)注人員交互,持續(xù)開發(fā)與交付,接受需求變更并適應(yīng)環(huán)境變化...詳情>>

        2023-10-14 13:24:57
        什么是PlatformIo?

        PlatformIO是什么PlatformIO是一個全面的物聯(lián)網(wǎng)開發(fā)平臺,它為眾多硬件平臺和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

        2023-10-14 12:55:06
        云快照與自動備份有什么區(qū)別?

        1、定義和目標不同云快照的主要目標是提供一種快速恢復(fù)數(shù)據(jù)的方法,它只記錄在快照時間點后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動備份的主要目標...詳情>>

        2023-10-14 12:48:59
        服務(wù)器為什么要用Linux?

        服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨特的優(yōu)勢和特點。包括其...詳情>>

        2023-10-14 12:34:11
        ORM解決的主要問題是什么?

        ORM(對象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向?qū)ο?..詳情>>

        2023-10-14 12:26:19
        快速通道
        武宁县| 锡林浩特市| 南澳县| 邵东县| 大庆市| 高尔夫| 仙游县| 吴忠市| 电白县| 乌鲁木齐县| 岱山县| 惠州市| 项城市| 玉环县| 徐闻县| 九龙县| 周口市| 阜新市| 普安县| 舞阳县| 沙坪坝区| 修文县| 兴文县| 广元市| 长丰县| 隆德县| 金华市| 新泰市| 东阳市| 瑞安市| 亳州市| 古浪县| 皮山县| 正阳县| 莱芜市| 永定县| 绥江县| 荃湾区| 怀化市| 沿河| 金寨县|