<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之旅 廣告
                ### G1:remember set 理解RSet首先需要知曉如下幾點: * 一個對象會被不同region的其他對象引用,這些region可能屬于不同的代,判斷對象是否存活的時候,不能能只考慮屬于一個代中的region內對象。 * 其他分代垃圾收集器也存在該問題,G1由于分區算法的原因,這個問題更為突出 * 比如回收新生代的時候也不得不掃描老年代? * 比如可達性分析算法的GC Roots集合可能在不同的代中,所以從所有GC Roots出發掃描關聯引用的對象的時候是會涉及所有代的。 * 如果為了回收某個代中的垃圾對象而掃描整個堆,這樣必然會降低垃圾回收的效率 * **所以堆內會有一部分的內存用來儲存對象引用關系,也就是堆內存并不能完全用來存放對象數據** 解決方法就是**使用remember set來避免全局掃描**: ![](https://img.kancloud.cn/82/16/8216aabbe902e70ec07c4876f7a55217_1198x445.png) 上圖中region2的RSet記錄了兩個引用到本region內對象的關系 * 每個region都有自身對應的一個記憶集RSet * 每次引用類型數據寫操作的時候,都會產生一個寫屏障(Write Barrier)暫時的中斷操作 * 然后檢查將要寫入的引用指向的對象是否和該引用類型數據在不同的region(其他收集器將會檢查老年代對象是否引用了新生代對象) * 如果不同,通過CardTable把相關引用信息記錄到引用指向對象所在的region對象的RSet中 * 當進行垃圾收集時,在GC根節點的枚舉范圍內加入RSet,就可以保證不進行全局的對象關系掃描。
                  <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>

                              哎呀哎呀视频在线观看