<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國際加速解決方案。 廣告
                # JVM 配置常用參數 ![](https://user-gold-cdn.xitu.io/2019/3/22/169a49566fec0862?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) **堆參數** ![](https://user-gold-cdn.xitu.io/2019/3/22/169a4956702e5eab?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) **回收器參數** ![](https://user-gold-cdn.xitu.io/2019/3/22/169a4956701e83ed?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) 如上表所示,目前**主要有串行、并行和并發三種**,對于大內存的應用而言,串行的性能太低,因此使用到的主要是并行和并發兩種。并行和并發 GC 的策略通過 UseParallelGC 和 UseConcMarkSweepGC 來指定,還有一些細節的配置參數用來配置策略的執行方式。例如:XX:ParallelGCThreads, XX:CMSInitiatingOccupancyFraction 等。 通常:Young 區對象回收只可選擇并行(耗時間),Old 區選擇并發(耗 CPU)。 **項目中常用配置** ![](https://user-gold-cdn.xitu.io/2019/3/22/169a495670b53d45?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) **常用組合** ![](https://user-gold-cdn.xitu.io/2019/3/22/169a495670bca2af?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) # 常用 GC 調優策略 ![](https://user-gold-cdn.xitu.io/2019/3/22/169a495670cf70ab?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) **GC 調優原則** 在調優之前,我們需要記住下面的原則: > 多數的 Java 應用不需要在服務器上進行 GC 優化; > > 多數導致 GC 問題的 Java 應用,都不是因為我們參數設置錯誤,而是代碼問題; > > 在應用上線之前,先考慮將機器的 JVM 參數設置到最優(最適合); > > 減少創建對象的數量; > > 減少使用全局變量和大對象; > > GC 優化是到最后不得已才采用的手段; > > 在實際使用中,分析 GC 情況優化代碼比優化 GC 參數要多得多。 **GC 調優目的** > 將轉移到老年代的對象數量降低到最小; > > 減少 GC 的執行時間。 **策略 1:**將新對象預留在新生代,由于 Full GC 的成本遠高于 Minor GC,因此盡可能將對象分配在新生代是明智的做法,實際項目中根據 GC 日志分析新生代空間大小分配是否合理,適當通過“-Xmn”命令調節新生代大小,最大限度降低新對象直接進入老年代的情況。 **策略 2:**大對象進入老年代,雖然大部分情況下,將對象分配在新生代是合理的。但是對于大對象這種做法卻值得商榷,大對象如果首次在新生代分配可能會出現空間不足導致很多年齡不夠的小對象被分配的老年代,破壞新生代的對象結構,可能會出現頻繁的 full gc。因此,對于大對象,可以設置直接進入老年代(當然短命的大對象對于垃圾回收老說簡直就是噩夢)。-XX:PretenureSizeThreshold 可以設置直接進入老年代的對象大小。 **策略 3:**合理設置進入老年代對象的年齡,-XX:MaxTenuringThreshold 設置對象進入老年代的年齡大小,減少老年代的內存占用,降低 full gc 發生的頻率。 **策略 4:**設置穩定的堆大小,堆大小設置有兩個參數:-Xms 初始化堆大小,-Xmx 最大堆大小。 **策略5:**注意: 如果滿足下面的指標,**則一般不需要進行 GC 優化:** > MinorGC 執行時間不到50ms; > > Minor GC 執行不頻繁,約10秒一次; > > Full GC 執行時間不到1s; > > Full GC 執行頻率不算頻繁,不低于10分鐘1次。 # JVM系列: **[深入詳解JVM 內存區域及內存溢出分析](https://juejin.im/post/1)** **[JVM的判斷對象是否已死和四種垃圾回收算法](https://juejin.im/post/6844903802299121672)** **[JVM 配置常用參數和常用 GC 調優策略](https://juejin.im/post/6844903802378665997)** [**7種JVM垃圾收集器特點,優劣勢、及使用場景!**](https://juejin.im/post/6844903805021224974) 作者:后端小寒 鏈接:https://juejin.cn/post/6844903802378665997 來源:掘金 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
                  <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>

                              哎呀哎呀视频在线观看