建立免费网站,海口官网设计,在线做的网站,wordpress字体开启 G1 Collector
G1收集器的出现除了提供可控的低延迟GC#xff0c;解决历史收集器的一些弊病#xff0c;同时还尽力简化调优参数 对于大多数应用#xff0c;开启收集器#xff0c;再配置一下Xms和Xmx就足够了#xff08;不建议配置Xmn#xff09;
-XX:UseG1GC核心参…开启 G1 Collector
G1收集器的出现除了提供可控的低延迟GC解决历史收集器的一些弊病同时还尽力简化调优参数 对于大多数应用开启收集器再配置一下Xms和Xmx就足够了不建议配置Xmn
-XX:UseG1GC核心参数
最大暂停时间的目标值 默认值为200毫秒。 太大会导致延迟大太小会导致频繁GC吞吐下降请结合堆大小酌情谨慎调节。一般情况下使用默认值就好。
-XX:MaxGCPauseMillis200G1每个Region的大小 该值为2的幂范围为1MB到32MB。我们的目标是根据最小Java堆大小拥有大约2048个区域。 建议交给JVM自动分配
-XX:G1HeapRegionSizen重要参数 年轻代堆大小的最小值 设置年轻代堆大小占整个堆的百分比。 默认值是Java堆的5% experimental VM flag 年轻代堆大小的最大值 设置年轻代堆大小占整个堆的百分比。 默认值是Java堆的60%。experimental VM flag
-XX:G1NewSizePercent5-XX:G1MaxNewSizePercent60触发标记周期的Java堆占用率阈值 触发标记周期的Java堆占用率阈值。默认占用率是整个Java堆的45%。
-XX:InitiatingHeapOccupancyPercent45MixedGC周期中的老年代的占用率阈值 设置要包含在混合垃圾收集周期中的老年代的占用率阈值。默认占用率为85%。experimental VM flag
-XX:G1MixedGCLiveThresholdPercent85允许堆浪费的百分比 设置您愿意浪费的堆的百分比。默认值为10%。 当可回收百分比小于堆浪费百分比时Java HotSpot VM不会启动混合垃圾收集周期。
-XX:G1HeapWastePercent10MixedGC周期中收集老年代区域的上限 设置在混合垃圾收集周期中要收集的老年代区域的上限。默认值为Java堆的10%。
-XX:G1OldCSetRegionThresholdPercent10保留空闲内存百分比 设置保持空闲的保留内存百分比以降低到空间溢出的风险。默认值为10%。
-XX:G1ReservePercent10MixedGC收集的目标数量 设置标记周期后混合垃圾收集的目标数量以收集最多包含 G1MixedGCLIveThresholdPercent 实时数据的旧区域。默认值为8个混合垃圾回收。混合集合的目标是在此目标数量内。
-XX:G1MixedGCCountTarget8GC问题分析
问题特征
使用默认配置参数MaxGCPauseMillis200多个服务GC收集器从CMS转到G1效果都很好GC耗时每分钟 大都在40ms以内但是有个服务就与众不同了。
YoungGC耗时长 300~500ms 有时1smixedGC 频次低耗时短都在50ms以内日志中常见 to survivor 耗尽 (to-space exhausted)
分析思路
调小年轻代 让yongGC频繁一些快一些 默认5%~60%
-XX:UnlockExperimentalVMOptions
-XX:G1NewSizePercent25
-XX:G1MaxNewSizePercent40mixedGC调节 提前触发每次多回收一些
提前触发标记周期 45%–35% 触发mixedGC的老年代的占用率阈值 85%–60% (experimentalVMOptions) mixedGC中要收集的老年代区域占整个堆的百分比上限 10%–20% 混合垃圾收集的目标数量 8–12
-XX:InitiatingHeapOccupancyPercent35
-XX:UnlockExperimentalVMOptions -XX:G1MixedGCLiveThresholdPercent60
-XX:G1OldCSetRegionThresholdPercent20
-XX:G1MixedGCCountTarget12 防止晋升失败 少浪费一些10%–5% 空闲空间多留一些10%–20% 如大对象晋升失败可调大Region
-XX:G1HeapWastePercent5
-XX:G1ReservePercent20
-XX:G1HeapRegionSize8常用命令
查看G1 experimental flag
java -XX:UnlockExperimentalVMOptions -XX:PrintFlagsFinal -version|grep experimental |grep G1查看某进程X设定的VM参数 例如查看 MaxGCPauseMillis 的值
jinfo -flag MaxGCPauseMillis pid查看进程GC情况 各分区使用情况GC次数和时间
jstat -gc pid查看进程VM参数
jinfo -flags pidreference
https://www.oracle.com/technical-resources/articles/java/g1gc.htmlhttps://code84.com/882088.html