<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 回收機制 JS有垃圾處理器,所以無需手動回收內存,而是由垃圾處理器自動處理。 一般來說,垃圾處理器有自己的回收策略。 譬如對于那些執行完畢的函數,如果沒有外部引用(被引用的話會形成閉包),則會回收。(當然一般會把回收動作切割到不同的時間段執行,防止影響性能) 常用的兩種垃圾回收規則是: - 標記清除 - 引用計數 Javascript 引擎基礎GC方案是(`simple GC`):`mark and sweep`(標記清除),簡單解釋如下: 1. 遍歷所有可訪問的對象。 2. 回收已不可訪問的對象。 譬如:(出自 javascript 高程) > 當變量進入環境時,例如,在函數中聲明一個變量,就將這個變量標記為“進入環境”。 > > 從邏輯上講,永遠不能釋放進入環境的變量所占用的內存,因為只要執行流進入相應的環境,就可能會用到它們。 > > 而當變量離開環境時,則將其標記為“離開環境”。 > > 垃圾回收器在運行的時候會給存儲在內存中的所有變量都加上標記(當然,可以使用任何標記方式)。 > > 然后,它會去掉環境中的變量以及被環境中的變量引用的變量的標記(閉包,也就是說在環境中的以及相關引用的變量會被去除標記)。 > > 而在此之后再被加上標記的變量將被視為準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。 > > 最后,垃圾回收器完成內存清除工作,銷毀那些帶標記的值并回收它們所占用的內存空間。 關于引用計數,簡單點理解: **跟蹤記錄每個值被引用的次數,當一個值被引用時,次數 +1,減持時 -1,下次垃圾回收器會回收次數為0的值的內存(當然了,容易出循環引用的bug)** **GC的缺陷** 和其他語言一樣,javascript 的 GC 策略也無法避免一個問題: **GC 時,停止響應其他操作** 這是為了安全考慮。 而 Javascript 的 GC 在`100ms`甚至以上 對一般的應用還好,但對于JS游戲,動畫對連貫性要求比較高的應用,就麻煩了。 這就是引擎需要優化的點: **避免GC造成的長時間停止響應。** **GC優化策略** 這里介紹常用到的:**分代回收(Generation GC)** 目的是通過區分“臨時”與“持久”對象: - 多回收“臨時對象”區(`young generation`) - 少回收“持久對象”區(`tenured generation`) - 減少每次需遍歷的對象,從而減少每次GC的耗時。 像node v8引擎就是采用的分代回收(和 java 一樣,作者是 java 虛擬機作者。) 更多可以參考:[V8 內存淺析](https://zhuanlan.zhihu.com/p/33816534)
                  <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>

                              哎呀哎呀视频在线观看