垃圾收集器与内存分配策略(五)之垃圾日志与常见参数
生活随笔
收集整理的這篇文章主要介紹了
垃圾收集器与内存分配策略(五)之垃圾日志与常见参数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
垃圾收集器與內存分配策略(五)——垃圾日志與常見參數
理解GC日志
每個收集器的日志格式都可以不一樣,但各個每個收集器的日志都維持一定的共性。如下面二段日志:
33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 secs] 3324K->152K(11904K), 0.0031680 secs] 100.667: [Full GC [Tenured: 0K->210K(10240K), 0.0149142 secs] 4603K->210K(19456K), [Perm : 2999K->2999K(21248K)], 0.0150007 secs] [Times: user=0.01 sys=0.00, real=0.02 secs](1).上面樣例所使用的Serial收集器中的新生代名為“Default New Generation”,所以顯示的是“[DefNew ]”。
(2).如果是ParNew收集器,新生代名稱就會變為“[ParNew”,意為“Parallel New Generation”。
(3).如果采用Parallel Scavenge收集器,那它配套的新生代稱為“PSYoungGen”,老年代和永久代同理,名稱也是由收集器決定的。
下面這段新生代收集器ParNew的日志也會出現“[Full GC”(這一般是因為出現了分配擔保失敗之類的問題,所以才導致STW)。
[Full GC 283.736: [ParNew: 261599K->261599K(261952K), 0.0000288 secs]垃圾收集參數總結
-XX:+< option > 啟用選項
-XX:-< option > 不啟用選項
-XX:< option > = < number >
-XX:< option > = < string >
| -XX:+UseSerialGC | Jvm運行在Client模式下的默認值,打開此開關后,使用Serial + Serial Old的收集器組合進行內存回收 |
| -XX:+UseParNewGC | 打開此開關后,使用ParNew + Serial Old的收集器進行垃圾回收 |
| -XX:+UseConcMarkSweepGC | 使用ParNew + CMS + Serial Old的收集器組合進行內存回收,Serial Old作為CMS出現“Concurrent Mode Failure”失敗后的后備收集器使用。 |
| -XX:+UseParallelGC | Jvm運行在Server模式下的默認值,打開此開關后,使用Parallel Scavenge + Serial Old的收集器組合進行回收 |
| -XX:+UseParallelOldGC | 使用Parallel Scavenge + Parallel Old的收集器組合進行回收 |
| -XX:SurvivorRatio | 新生代中Eden區域與Survivor區域的容量比值,默認為8,代表Eden:Subrvivor = 8:1 |
| -XX:PretenureSizeThreshold | 直接晉升到老年代對象的大小,設置這個參數后,大于這個參數的對象將直接在老年代分配 |
| -XX:MaxTenuringThreshold | 晉升到老年代的對象年齡,每次Minor GC之后,年齡就加1,當超過這個參數的值時進入老年代 |
| -XX:UseAdaptiveSizePolicy | 動態調整java堆中各個區域的大小以及進入老年代的年齡 |
| -XX:+HandlePromotionFailure | 是否允許新生代收集擔保,進行一次minor gc后, 另一塊Survivor空間不足時,將直接會在老年代中保留 |
| -XX:ParallelGCThreads | 設置并行GC進行內存回收的線程數 |
| -XX:GCTimeRatio | GC時間占總時間的比列,默認值為99,即允許1%的GC時間,僅在使用Parallel Scavenge 收集器時有效 |
| -XX:MaxGCPauseMillis | 設置GC的最大停頓時間,在Parallel Scavenge 收集器下有效 |
| -XX:CMSInitiatingOccupancyFraction | 設置CMS收集器在老年代空間被使用多少后出發垃圾收集,默認值為68%,僅在CMS收集器時有效,-XX:CMSInitiatingOccupancyFraction=70 |
| -XX:+UseCMSCompactAtFullCollection | 由于CMS收集器會產生碎片,此參數設置在垃圾收集器后是否需要一次內存碎片整理過程,僅在CMS收集器時有效 |
| -XX:+CMSFullGCBeforeCompaction | 設置CMS收集器在進行若干次垃圾收集后再進行一次內存碎片整理過程,通常與UseCMSCompactAtFullCollection參數一起使用 |
| -XX:+UseFastAccessorMethods | 原始類型優化 |
| -XX:+DisableExplicitGC | 是否關閉手動System.gc |
| -XX:+CMSParallelRemarkEnabled | 降低標記停頓 |
| -XX:LargePageSizeInBytes | 內存頁的大小不可設置過大,會影響Perm的大小,-XX:LargePageSizeInBytes=128m |
Client、Server模式默認GC
| Client | Serial串行GC | Serial Old串行GC |
| Server | Parallel Scavenge 并行回收GC | Parallel Old 并行GC |
Sun/Oracle JDK GC組合方式
?
?
轉載于:https://my.oschina.net/PrivateO2/blog/1575788
總結
以上是生活随笔為你收集整理的垃圾收集器与内存分配策略(五)之垃圾日志与常见参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酷家乐酒柜怎么做? 酷家乐定制楼梯下酒柜
- 下一篇: 来自凌辉的祝福