<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 定義 javaScript在創建對象時會主動為它分配內存,不再使用時會釋放其內存。(垃圾回收器會周期性找出不再使用的變量,然后釋放其內存。) ***** ## 回收方式 垃圾回收機制主要有兩種方式,一種是標記請除,一種是引用計數 ***** a).標記清除 在函數聲明一個變量的時候,就將這個變量標記為“進入環境”。從邏輯上講,永遠都不能釋放進入環境的變量作占用的內存,因為只要執行流進入相應的環境,就可能會用到它們。而當變量離開環境時,則將其標記為“離開環境”。垃圾回收器在運行時候會給存儲在內存中中的所有變量都加上標記。然后它會去掉環境中的變量以及被環境中的變量引用的變量的標記(閉包)。在此之后再被標記的變量將被視為準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。最后,垃圾回收器完成內存清楚工作,銷毀那些帶標記的值并回收他們所占用的內存空間。 ``` function test(){ var a = 10 ; //被標記 ,進入環境 var b = 20 ; //被標記 ,進入環境 } test(); //執行完畢 之后 a、b又被標離開環境,被回收。 ``` ***** b).引用計數 引用計數的含義是跟蹤記錄每個值被引用的次數。當聲明了一個變量并將一個引用類型值賦給該變量時,則這個值的引用次數就是1。如果同一個值又被賦給另一個變量,則該值的引用次數加1。相反,如果包含對這個值引用的變量又取得了另外一個值,則這個值的引用次數減1。當這個值的引用次數變成0時,則說明沒有辦法再訪問這個值了,因而就可以將其占用的內存空間回收回來。這樣,當垃圾回收器下次再運行時,它就會釋放那些引用次數為0的值所占用的內存。 ???但是很重要的一點是當遇到循環引用的時候,函數的引用次數就不會為0,所以不會被垃圾回收器回收內存,會造成內存泄露。在IE中涉及COM對象,就會存在循環引用的問題。 ``` function test(){ var a = {} ; //a的引用次數為0 var b = a ; //a的引用次數加1,為1 var c =a; //a的引用次數再加1,為2 var b ={}; //a的引用次數減1,為1 } ``` ## 常見的內存泄露 全局變量,未清除的定時器,DOM的使用,閉包
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看