9.3. 垃圾回收器可调参数汇总
9.3.1. 通用可调参数
-Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间
-XX:+UseTLAB 使用TLAB,默认打开
-XX:+PrintTLAB 打印TLAB的使用情况
-XX:TLABSize 设置TLAB大小
-XX:+DisableExplictGC System.gc()不管用 ,FGC
-XX:+PrintGC 打印GC的信息
-XX:+PrintGCDetails 查看GC的详细信息
-XX:+PrintHeapAtGC 查看GC中堆的信息
-XX:+PrintGCTimeStamps 查看GC的时间节点
-XX:+PrintGCApplicationConcurrentTime 打印应用程序时间
-XX:+PrintGCApplicationStoppedTime 打印暂停时长
-XX:+PrintReferenceGC 记录回收了多少种不同引用类型的引用
-verbose:class 查看类加载详细过程
-XX:+PrintVMOptions 查看虚拟机接受到的命令行显式参数
-XX:+PrintFlagsFinal 筛选某些符合条件参数的最后值
-XX:+PrintFlagsInitial 筛选某些符合条件参数的默认值
-Xloggc:opt/log/gc.log 导出日志
-XX:MaxTenuringThreshold 升代年龄,最大值15
-XX:PreBlockSpin 锁自旋次数
-XX:CompileThreshold 热点代码检测参数
9.3.2. Parallel垃圾回收器的常用参数
-XX:SurvivorRatio 设置新生代中Eden区、survivor1区、survivor2区的比例
-XX:PreTenureSizeThreshold -XX:MaxTenuringThreshold 大对象到底多大
-XX:+ParallelGCThreads 并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同
-XX:+UseAdaptiveSizePolicy 自动选择各区大小比例
9.3.3. CMS常用参数
-XX:+UseConcMarkSweepGC 设置使用CMS垃圾回收器
-XX:ParallelCMSThreads CMS线程数量(默认是PC核的一半)
-XX:CMSInitiatingOccupancyFraction 使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生SerialOld卡顿,应该调小,(频繁CMS回收)
-XX:+UseCMSCompactAtFullCollection 在FGC时进行压缩
-XX:CMSFullGCsBeforeCompaction 多少次FGC之后进行压缩
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingPermOccupancyFraction 达到什么比例时进行Perm回收
GCTimeRatio 设置GC时间占用程序运行时间的百分比
-XX:MaxGCPauseMillis 停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代
9.3.4. G1常用参数
-XX:+UseG1GC 设置使用G1作为垃圾回收器
-XX:MaxGCPauseMillis 建议值,G1会尝试调整Young区的块数来达到这个值
-XX:GCPauseIntervalMillis GC的间隔时间
-XX:+G1HeapRegionSize 分区大小,建议逐渐增大该值,该值可以取值为1、2、4、8、16、32。 随着size增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长。在ZGC垃圾回收器中,该部分做了改进,采用动态区块大小、
G1NewSizePercent 新生代最小比例,默认为5%
G1MaxNewSizePercent 新生代最大比例,默认为60%
GCTimeRatio GC时间建议比例,G1会根据这个值调整堆空间
ConcGCThreads 线程数量
InitiatingHeapOccupancyPercent 启动G1的堆空间占用比例