<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國際加速解決方案。 廣告
                # 8.6 標記終止階段 ## 終止檢測算法 ### 標記終止階段的移除 在 Go 1.5 之前, Go 的垃圾回收器是一個全局的垃圾回收器,Go 持續支持 STW 垃圾回收作為調試模式。 Go 1.5 引入了并發收集器,但為了最少限度的減少大規模侵入式更改,它將大部分現有的 GC 機制保留為 STW 的標記終止 (Mark Termination), 同時在 STW 階段之前添加并發標記階段。盡管這個并發標記階段盡可能的實現了理應并發的部分,但最終還是需要 STW 算法來清理它沒有實現的工作。 在 Go 1.8 之前,并發標記總是留下至少一部分工作(Dijkstra 寫屏障的特點),因為在標記終止期間,必須重新掃描并發階段期間修改的任何棧。 Go 1.8 引入了一個新的寫屏障(即混合寫屏障),不再需要對棧進行重新掃描,從而大大減少了標記終止時必須完成的工作量。 然而,由于它之前從未真正的重要,我們對于進入標記終止階段是相當馬虎的:決定何時進入標記終止的算法通常需要等到所有工作都由并發標記完成, 但有時部分工作會一樓,留下標記終止清理混亂。 此外,為了最小化(但不消除)過早進入標記終止的機會,Go 1.5 將并行標記劃分為 Mark1 和 Mark2 兩個階段。在 Mark1 期間, 當它用完全局標記工作時,將刷新并禁用所有本地工作緩存(啟用立即標黑模式)并輸入 Mark2。在 Mark2 期間,當它再次用完全局標記工作時, 它將進入標記終止。不幸的是,立即標黑的模式會對性能造成一定影響(這些本地緩存存在原因),并且算法可以在 GC 周期的早起進入 Mark2, 因為它僅檢測工作瓶頸。雖然禁用所有本地緩存旨在防止標記過早終止,但這并不總是有效。 ### 使用無競爭算法替換 Mark2 #### 證明 **定理: 當算法終止時,如果所有標記工作隊列為空,則終止檢測算法會成功。**
                  <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>

                              哎呀哎呀视频在线观看