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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 什么場景下gc很重要 - 內存需要被反復利用的場景 - 大量的對象在被分配和回收 - 高并發場景 ## 標記(Mark-Sweep)算法 ![](https://img.kancloud.cn/e2/c7/e2c772ae72dccab8fa4ad70923aab239_800x556.png) - 棧中分配的對象存入一個集合中( Root set) - 每次遍歷 Rootlet中的對象追溯Heap中的對象進行分析 - 分成兩個階段標記(Mark)和清掃( Sweep)階段 - Mak負責標記在使用的對象 - Sweep負責刪除不被使用的對象 **Mark 階段** ![](https://img.kancloud.cn/6e/f7/6ef7d06f36964fb6851f72bd785d1036_400x281.png) **Sweep階段** ![](https://img.kancloud.cn/9f/ca/9fca73222b6cd8d6492610c8517c5b1b_400x272.png) 刪除沒有被標記的對象 ## gc時程序狀態 ### STP(Stop The World) 模型 ![](https://img.kancloud.cn/ad/6a/ad6a1feda95f6ed9764605587b6bb243_400x81.png) 執行時每一個階段,都要全部執行完全 ### Increment Update 模型 ![](https://img.kancloud.cn/62/e7/62e7b5fccb9415bc03e1da6332a89d56_400x58.png) 每個階段多次執行 ## Stop-the-world 問題 很難做到不STW,但是可以考慮縮短STW的時間,讓用戶感知到的是一個連續的模型 ## 三色標記 go 使用 三色 白色:需要回收 黑色:不回收 灰色:中間地帶 Root->白->灰 掃描 root set,找到白色節點標記成灰色 ![](https://img.kancloud.cn/a9/84/a984839a72ba07e8404196f732aa76dd_400x278.png) 灰->黑 以灰色節點為起始點,做一次BFS。之前的灰色節點標黑,剩下的白色節點就是需要回收的 ![](https://img.kancloud.cn/c0/c3/c0c30d637a21234c43d5f90abbc8731d_400x271.png) ![](https://img.kancloud.cn/6a/be/6abe6229a585d7d5aedd61264401a581_400x272.png) **會不會有 mutation違反性質** - 方法 - 讀取白色節點時增加一個讀屏障( read barrier),禁止讀取 - 改變一個黑色節點時增加一個寫屏障 write barrier),寫入結束后,將這個節點標記成為灰色。 - 嚴格保證了不會有黑色節點指向白色節點。
                  <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>

                              哎呀哎呀视频在线观看