<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之旅 廣告
                ### 分代收集算法\(Generational Collection\) 分代搜集算法是針對對象的不同特性,而使用適合的算法 ### 增量回收 在對實時性要求很高的程序中,比起縮短GC的平均中斷時間,往往更重視縮短GC的最大中斷時間。例如,在機器人的姿勢控制程序中,如果因為GC而讓控制程序中斷了0.1秒,機器人可能就摔倒了。或者,如果車輛制動控制程序因為GC而延遲響應的話,后果也是不堪設想的。在這些對實時性要求很高的程序中,必須能夠對GC所產生的中斷時間做出預測。例如,可以將“最多只能中斷10毫秒”作為附加條件。在一般的GC算法中,作出這樣的保證是不可能的,因為GC產生的中斷時間與對象的數量和狀態有關。 因此,為了維持程序的實時性,不等到GC全部完成,而是將GC操作細分成多個部分逐一執行。這種方式被稱為增量回收(Incremental GC)。在增量回收中,由于GC過程是漸進的,在回收過程中程序本身會繼續運行,對象之間的引用關系也可能會發生變化。如果已經完成掃描和標記的對象被修改,對新的對象產生了引用,這個新對象就不會被標記,明明是“存活”對象卻被回收掉了。在增量回收中為了避免這樣的問題,和分代回收一樣也采用了寫屏障。當已經被標記的對象的引用關系發生變化時,通過寫屏障會將新被引用的對象作為掃描的起始點記錄下來。由于增量回收的過程是分步漸進式的,可以將中斷時間控制在一定長度之內。另一方面,由于中斷操作需要消耗一定的時間,GC所消耗的總時間就會相應增加,正所謂有得必有失 ### 并行回收 最近的計算機中,一塊芯片上搭載多個CPU核心的多核處理器已經逐漸普及。不僅是服務器,就連個人桌面電腦中,多核CPU也已經成了家常便飯。例如美國英特爾公司的Core i7就擁有6核12個線程。在這樣的環境中,就需要通過利用多線程來充分發揮多CPU的性能。并行回收正是通過最大限度利用多CPU的處理能力來進行GC操作的一種方式。并行回收的基本原理是,是在原有的程序運行的同時進行GC操作,這一點和增量回收是相似的。不過,相對于在一個CPU上進行GC任務分割的增量回收來說,并行回收可以利用多CPU的性能,盡可能讓這些GC任務并行(同時)進行。由于軟件運行和GC操作是同時進行的,因此就會遇到和增量回收相同的問題。為了解決這個問題,并行回收也需要用寫屏障來對當前的狀態信息保持更新。不過,讓GC操作完全并行,而一點都不影響原有程序的運行,是做不到的。因此在GC操作的某些特定階段,還是需要暫停原有程序的運行。在多核化快速發展的現在,并行回收也成了一個非常重要的話題,它的算法也在不斷進行改善。在硬件系統的支持下,無需中斷原有程序的完全并行回收器也已經呼之欲出。今后,這個領域相當值得期待
                  <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>

                              哎呀哎呀视频在线观看