日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jvm 06-G1收集器

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jvm 06-G1收集器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

G1收集器(Garbage First)

  • 從JDK1.7 u4版本之后正式引入到Java中的垃圾收集器
  • 此類垃圾收集器主要應用在多CPU以及大內存的服務器環境下
  • 主要特點是極大的減少垃圾收集的停頓時間,以提升服務器的操作性能
  • 引入此收集器的目的是為了在將來的某一時間內可以替換掉CMS收集器

G1區域劃分

  • G1垃圾收集器采用的是區域化、分布式的垃圾收集器
  • G1垃圾收集器將整個堆內存區域劃分成大小相同的子區域(Region)
  • 在JVM啟動時會自動設置這些子區域的大小
    • 區域大小范圍1MB ~ 32MB,最多可以設置2048個區域
    • 最大內存為32MB * 2048 = 65536M,即64G內存
  • Eden、Survivor和Tenured就變為了一系列不連續的內存區域,避免了全內存區的GC操作
  • 在G1之中不再區分所謂的新生代、老年代內存空間,所有的內存空間就是一塊

GC策略

  • 雖然在G1收集器里面將整個的內存區域都混合在一起
  • 但是其本身依然也是在小范圍內要進行新生代與老年代的區分
  • 也就是說依然會采用不同的GC方式來處理不同的區域

G1新生代對象回收

  • 所有的垃圾內存的保存區域有可能會被清空后重新分配

G1老年代回收

  • G1在老年代垃圾回收最大的好處在于進行全內存掃描是,只需要安裝區域來進行掃描即可

G1收集器參數

  • -XX:G1HeapRegionSize=n:設置G1區域的大小,每個區域大小可選范圍1MB ~ 32MB之間。目標是根據最小的堆內存大小劃分出約2048個區域
  • -XX:MaxGCPauseMillis=n:設置回收的最大時間
  • -XX:G1NewSizePercent=n:設置新生代最小使用的空間比率,默認Java堆內存的5%
  • -XX:G1MaxNewSizePercent=n:設置新生代最大使用的空間比率,默認Java堆內存的6%
  • -XX:ParallelGCThreads=n:設置STW工作線程數的值,與使用的CPU數量有關,最大值為8。如果CPU數量超過8個,則最多可以設置總CPU數量的5/8
  • -XX:ConcGCThreads=n:設置并行標記線程數
  • -XX:InitiatingHeapOccupancyPercent=n:設置占用區域的百分比,超過此百分比將觸發GC操作,默認為45%
  • -XX:NewRatio=n:設置新生代與老年代的比率(young/tenured),默認為2
  • -XX:SurvivorRatio=n:設置Eden與Survivor的比率(Eden/Survivor),默認為8
  • -XX:MaxTenuringThreshold=n:新生代保存到老年代的歲數
  • -XX:G1ReservePercent=n:設置預留空間的空閑百分比,以降低目標空間的溢出風險,默認為10%

使用G1回收器策略

測試代碼:

package cn.liang.jvm; public class gctest2 {public static void main(String[] args) {String string = "liangjingfu";while (true) {string += string + string;string.intern(); }} }

配置JVM:

-Xmx10m -Xms10m -XX:+UseG1GC -XX:+PrintGCDetails

輸出結果:

[GC pause (G1 Humongous Allocation) (young), 0.0007849 secs][Parallel Time: 0.3 ms, GC Workers: 4][GC Worker Start (ms): Min: 139.8, Avg: 139.9, Max: 140.1, Diff: 0.3][Ext Root Scanning (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.5][Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0][Processed Buffers: Min: 0, Avg: 0.5, Max: 1, Diff: 1, Sum: 2][Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0][Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0][Object Copy (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0][Termination (ms): Min: 0.0, Avg: 0.1, Max: 0.1, Diff: 0.1, Sum: 0.3][Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 4][GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0][GC Worker Total (ms): Min: 0.0, Avg: 0.2, Max: 0.3, Diff: 0.3, Sum: 0.9][GC Worker End (ms): Min: 140.1, Avg: 140.1, Max: 140.1, Diff: 0.0][Code Root Fixup: 0.0 ms][Code Root Purge: 0.0 ms][Clear CT: 0.1 ms][Other: 0.3 ms][Choose CSet: 0.0 ms][Ref Proc: 0.2 ms][Ref Enq: 0.0 ms][Redirty Cards: 0.1 ms][Humongous Register: 0.0 ms][Humongous Reclaim: 0.0 ms][Free CSet: 0.0 ms][Eden: 0.0B(2048.0K)->0.0B(2048.0K) Survivors: 0.0B->0.0B Heap: 4083.6K(10.0M)->4083.6K(10.0M)][Times: user=0.00 sys=0.00, real=0.00 secs]

轉載于:https://www.cnblogs.com/liangjingfu/p/10008607.html

總結

以上是生活随笔為你收集整理的jvm 06-G1收集器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。