Skip to content

一、GC 常用的参数

  • Xmn: 年轻代
  • Xms: 最小堆
  • Xmx: 最大堆
  • Xss: 堆空间

  • 堆内存最大和最小设置一样,预防内存抖动。
shell
java -Xms256m -Xmx256m xxx.jar
  • -XX:+UseTLAB: 使用TLAB, 默认打开
  • -XX:+UseTLAB: 打印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: 打印VM设置操作参数
  • -XX:+PrintFlagsFinal -XX:+PrintFlagsInitial :打印GC -XX 使用命令列表
  • -Xloggc:/opt/log/gc.log : 保存GC日志地址
  • -XX:MaxTenuringThreshold : 升代年龄,最大值15
  • -XX:PreBlockSpin: 锁自旋次数
  • -XX:CompileThreshold: 热点代码检查参数

二、Paraller 常用参数

  • -XX:SurvivorRatio: 设置S1或S0区内存比例
  • -XX:MaxTenuringThreshold: 设置垃圾的最大年龄. 默认为15, 最大也是15 (在jdk8中. 范围为0~15)
  • -XX:+ParallelGCThreads : 并行收集器的线程数, 同样适用于 CMS, 一般设为和CPU核数相同
  • -XX:+UseAdaptiveSizePolicy : 自动选择各区大小比例

三、CMS 常用参数

  • -Xx:+UseConcMarkSweepGC: 使用CMS垃圾收集器
  • -XX:ParallelCMSThreads: CMS线程数量
  • -XX:CMSInitiatingOccupancyFraction: 使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生Serial0ld卡顿,应该调小,(频繁CMS回收)
  • -XX:UseCMSCompactAtFullCollection: 在FGC时进行压缩
  • -XX:CMSFullGCsBeforeCompaction: 多少次FGC之后进行压缩
  • -XX:+CMSClassUnloadingEnabled: CMS类卸载启用
  • -XX:CMSInitiatingPermOccupancyFraction: CMS启动热占用率
  • GCTimeRatio:设置GC时间占用程序运行时间的百分比
  • -XX:MaxGCPauseMillis: 停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代

四、G1 常用参数

  • -XX:+UseG1GC: 使用 G1 垃圾收集器
  • -XX:MaxGCPauseMillis: 最大GC暂停时间(单位:毫秒), 建议值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的堆空间占用比例